lua - 这在 Lua 中意味着什么? "var = var or"

标签 lua

你能告诉我这是什么意思吗?我知道基本的变量声明和赋值,但这很令人困惑。这有什么区别

var = var or {
        "one",
        "two",
        "three",
    }

var = { "one",
        "two",
        "three",
    }

我快速查看手册,找不到解释。

最佳答案

or 不返回 bool 值;相反,它返回第一个真值或最后一个假值(如果它们都不为真)。

例如:

print(nil or 123) -- 123
print(123 or nil) -- 123
print(456 or 123) -- 456
print(nil or false or "hi") -- hi

您找到的行是此属性的惯用用法,用于将变量设置为默认值(如果它是 nilfalse,但如果它是任何其他值则保留其值) .示例

function foo(arg)
    arg = arg or "hello world!"
    print(arg)
end

foo() -- "hello world!"
foo("goodbye world!") -- "goodbye world!"

的工作方式也类似;它返回第一个假值或最后一个真值。通过将两者结合使用,您还可以模拟三元运算符:

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"

关于lua - 这在 Lua 中意味着什么? "var = var or",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27379944/

相关文章:

lua - 定义平台表的更短方法

module - 你能在变量上调用 "require"吗?

c - Lua:getglobal内部回调

lua - 如何运行 .lua 脚本?

ubuntu - 错误 : Failed finding Lua library. 您可能需要配置 LUA_LIBDIR

lua - 如何使用lua脚本在redis中使用 'hget'命令获取键值

lua - 将这两行 lua 格式化行合并为一行

android - 在 Android 上使用 LuaJ 从 Lua 脚本中请求其他 lua 脚本

Luabind 和协程

variables - Lua 对于范围内的变量