朱莉娅控制流程布尔无法按预期工作

Jer*_*ees 3 julia

在使用短路评估控制流程时,我得到的结果与我的预期不符.这就是我想要做的:

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)

Ste*_*ski 6

&&运营商的优先级高于||这意味着你的测试就相当于var1 || (var2 && var3),而不是(var1 || var2) && var3这可能是你所期望的.这种优先级在许多语言中都是标准的,包括C,Java,Perl和Ruby.