在 Lua 中,如何将 nil 参数正确设置为某个默认值?

Joe*_*ang 6 parameters lua function

对于下面的 Lua 代码:

local function foo(x, y, z)
    local x = x or true
    local y = y or 1234
    z = z or "default"
end
Run Code Online (Sandbox Code Playgroud)

一直以为函数里面这三行的意思是:

如果 x/y/z 为零,则 x/y/z 设置为 true/1234/“默认”。否则,它保持原样。因此,我在很多地方都有这样的一行来将参数设置为某个默认值,以防它可能作为 nil 传递给函数。

但是,在我的实验中似乎并不完全正确。我不确定我从哪里学到了这个 Lua 编码概念。如何正确地做到这一点?

hjp*_*r92 6

只要您的 boolean(?) 变量x未初始化为false. 如果您只想对nil值使用默认值,则该a or b方法是正确的。

如果您的变量可以是false,则必须使用严格的 if-then 块:

if x == nil then x = true end
Run Code Online (Sandbox Code Playgroud)

您可以在lua wiki上看到更多关于三元运算符的方法/示例。