Lua 是否有像 Swift 或 C# 中那样的变量?.function() 之类的东西?

鍾孟儒*_*鍾孟儒 4 lua

大家好!

我最近在用 Lua 编程,厌倦了编写一些代码,比如

if variable ~= nil then
    variable.function()
end
Run Code Online (Sandbox Code Playgroud)


我知道在 C# 或 Swift 中,我们可以做类似的事情

variable?.function()
Run Code Online (Sandbox Code Playgroud)

Lua 有一些方法来实现这种功能吗?

lub*_*bgr 5

来自“Programming in Lua”,第 4 版,“表”部分:

\n\n
\n

Lua 没有提供安全的导航操作符,我们认为它不应该提供。Lua 是简约的。而且,这个运算符颇具争议,许多人认为 \xe2\x80\x94 并非没有原因 \xe2\x80\x94 它促进了粗心的编程。然而,我们可以在 Lua 中通过一些额外的符号来模拟它。

\n
\n\n

建议的额外符号可能适合您的情况;

\n\n
((variable or {}).func or function() end)()\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会检查是否variablenil(或false),如果不是,则尝试访问其条目func(请注意,您不能命名函数,function因为它是关键字) - 如果不存在,则返回一个不执行任何操作的函数,否则返回函数variable.func。立即调用结果函数。

\n\n

但我认为这不是很有可读性。

\n