今天,我在代码战中解决了简单的The if function kata问题。
这个kata,如果非常简单,它会要求实现与三元运算符function
相似的bool ? f1() : f2()
。
令我惊讶的是,有一个隐藏的情况,当return bool and f1() or f2()
解决方案失败而return (bool and f1 or f2)()
解决方案失败时
作品。
bool and f1() or f2()
与(bool and f1 or f2)()
的区别是什么情况?
谢谢
UPD答案:
1)true and return_false() or will_call()
和return_false
will_call
在这里运行。
2)仅(true and return_false or will_call)()
return_false
开始。
答案 0 :(得分:1)
这与答案无关,而是关于跑步后的事情。
这很简单。我只是找到并回答。 功能不完善
1.如果true and a() or b()
触发a()如果a()返回false,则将执行b()。
2. (true and a or b)()
仅触发a()
因此,在第一种情况下,会触发a()和b(),并且两者都起作用。
local x = 0
function f1() x = x + 1 end
function f2() x = x + 1 end
-- this function fires both f1() and f2()
function if1(b,f1,f2) return b and f1() or f2() end
-- x == 2
x = 0
-- this function fires only f1()
function if2(b,f1,f2) return (b and f1 or f2)() end
-- x == 1