如何在Lua中将空变量传递给一个函数

我尝试传递空值给函数,但是失败了。以下是我的设置:

function gameBonus.new( x, y, kind, howFast )   -- 构造函数
    local newgameBonus = {
        x = x or 0,
        y = y or 0,
        kind = kind or "no kind",
        howFast = howFast or "no speed"
    }
    return setmetatable( newgameBonus, gameBonus_mt )
end

我只想传递 "kind" 并让构造函数处理其余部分。像这样;

 local dog3 = dog.new("" ,"" , "bonus","" )

或者我只想传递 "howFast";

 local dog3 = dog.new( , , , "faster")

我尝试了带有 "" 和不带有 "" 的两种方式,但都出错了:

unexpected symbol near ','

点赞
用户1009479
用户1009479

nil是Lua中表示空的类型和值,因此,不应该传递空字符串""或者什么也不传,而是应该像这样传递nil

local dog3 = dog.new(nil ,nil , "bonus", nil )

请注意,最后一个nil可以省略。

以第一个参数x为例,表达式

x = x or 0

等价于:

if not x then x = 0 end

也就是说,如果x既不是false也不是nil,就用默认值0来设置x

2013-11-03 04:07:09
用户1847592
用户1847592
# gameBonus.new(x ,y, kind, howFast)构造函数

该构造函数用于创建一个新的 `gameBonus` 对象,其具有以下参数:

- `x`:可选参数,指定对象横向位置。
- `y`:可选参数,指定对象纵向位置。
- `kind`:可选参数,指定对象种类。
- `howFast`:可选参数,指定对象速度。

如果参数 `x` 的类型不是表,则会创建一个包含指定属性的表,否则使用参数 `x` 本身作为表。如果某个属性不存在,则设置为默认值。

返回值:返回一个设置了元表的 `newgameBonus` 对象。

## 使用示例

```lua
local dog1 = dog.new(nil, nil, "bonus", nil)
local dog2 = dog.new{kind = "bonus"}
local dog3 = dog.new{howFast = "faster"}

```

2013-11-03 05:50:15