你能告诉我这是什么意思吗?我知道基本的变量声明和分配,但这很令人困惑。这个
有什么区别var = var or {
"one",
"two",
"three",
}
和
var = { "one",
"two",
"three",
}
我很快检查了手册,找不到解释。
答案 0 :(得分:6)
or
没有返回布尔值;相反,它返回第一个真值或最后一个假值,如果它们都不为真。
例如:
print(nil or 123) -- 123
print(123 or nil) -- 123
print(456 or 123) -- 456
print(nil or false or "hi") -- hi
您找到的行是惯用的此属性,用于将变量设置为默认值nil
或false
,但保留其值,如果它是{s =}还要别的吗。实施例
function foo(arg)
arg = arg or "hello world!"
print(arg)
end
foo() -- "hello world!"
foo("goodbye world!") -- "goodbye world!"
and
同样也有效;它返回第一个falsey值或最后一个truthy值。通过将两者结合使用,您还可以模拟三元运算符:
function foo(bool)
print(bool and "yes" or "no") -- second value (the true value) must be truthy
end
print(foo(true)) -- "yes"
print(foo(false)) -- "no"
print(foo(123)) -- "yes"