在使用短路评估控制流程时,我得到的结果与我的预期不符.这就是我想要做的:
if var1 || var2 && var3
do something cool
end
Run Code Online (Sandbox Code Playgroud)
相反,我明白了:
if var1 || var2
do something that I don't want
end
Run Code Online (Sandbox Code Playgroud)
这似乎只评估var1 || var2并跳过&&部分.我认为这应该有效,我错过了什么?
链接到控制流:http: //julia.readthedocs.org/en/latest/manual/control-flow/
谢谢
如下所示,解决方案显示我应该使用括号来获得我想要的内容:
if (var1 || var2) && var3
do something cool
end
Run Code Online (Sandbox Code Playgroud)
该&&运营商的优先级高于||这意味着你的测试就相当于var1 || (var2 && var3),而不是(var1 || var2) && var3这可能是你所期望的.这种优先级在许多语言中都是标准的,包括C,Java,Perl和Ruby.