我最近在用 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 有一些方法来实现这种功能吗?
来自“Programming in Lua”,第 4 版,“表”部分:
\n\n\n\n\nLua 没有提供安全的导航操作符,我们认为它不应该提供。Lua 是简约的。而且,这个运算符颇具争议,许多人认为 \xe2\x80\x94 并非没有原因 \xe2\x80\x94 它促进了粗心的编程。然而,我们可以在 Lua 中通过一些额外的符号来模拟它。
\n
建议的额外符号可能适合您的情况;
\n\n((variable or {}).func or function() end)()\nRun Code Online (Sandbox Code Playgroud)\n\n这会检查是否variable是nil(或false),如果不是,则尝试访问其条目func(请注意,您不能命名函数,function因为它是关键字) - 如果不存在,则返回一个不执行任何操作的函数,否则返回函数variable.func。立即调用结果函数。
但我认为这不是很有可读性。
\n