【发布时间】:2018-04-03 15:07:35
【问题描述】:
我在代码战中遇到了这个问题,如下所示:
实现一个函数,该函数将根据一个布尔值运行 2 个不同的函数。当然,也可以使用简单的 if 语句来实现。像这样:
function _if(bool, func1, func2)
if bool then return func1() else return func2() end
end
但是,当我想使用三元运算符解决它时,它并没有通过所有测试用例:
function _if(bool, func1, func2)
return bool and func1() or func2()
end
但这有效:
function _if(bool, func1, func2)
return (bool and func1 or func2)()
end
我认为我对 Lua 的了解不够。我已经在社区中搜索过这个问题,但找不到任何明确的解释。我想知道是否有人可以对此有所了解,或者只是建议一些可能有助于我理解的文章。
更新 编辑
那么,如果func1 总是返回真值,那么第二个 sn-p 与第三个有何不同?
【问题讨论】:
-
Lua 没有任何三元运算符!就是这样,优先级高于or。
-
看我的回答。我添加了一些细节。请阅读en.wikipedia.org/wiki/Short-circuit_evaluation
标签: function lua ternary-operator