function override(override, bool)
bool = bool and true or false --convert to pure Boolean
if override then
boolOverride = bool
else
boolOverride = nil
end
end
然而,我想这样做,如果没有指定bool,它就可以了
bool = not boolOverride
。所以应该是这样的:
function override(override, bool)
if type(bool) == "nil" then
bool = not boolOverride
else
bool = bool and true or false --convert to pure Boolean
end
if override then
boolOverride = bool
else
boolOverride = nil
end
end
问题是,我希望它运行默认选项
bool = bool and true or false
如果参数具体为nil而不是不存在。我可以利用这两种情况来实现这一点,这两者之间有什么区别吗?
function f(...)
local n = select("#", ...)
if n == 0 then print"nothing"
elseif n == 1 then print(...)
else error"too many arguments" end
end
f() -- nothing
f(nil) -- nil
f(1, 2) -- errors with "too many arguments"