在Julia的链式比较中,“var1&& var2!= 1”的意思是“(var1和var2)!= 1”?

时间:2013-08-22 13:05:38

标签: comparison-operators chained julia

我对朱莉娅的链式比较有疑问。我读过this section in the manual,但目前还不清楚。

在朱莉娅,这是:

if var1 && var2 != 1

意思是这(在Python中):

if (var1 and var2) != 1:

谢谢!

2 个答案:

答案 0 :(得分:13)

您总是可以引用一个表达式来查看解析器如何解释它:

julia> :(var1 && var2 != 1)
:(var1 && (var2!=1))

在这种情况下,!=&&绑定得更紧密。这是具有这两个运算符的语言的标准优先级,例如C和Java。

答案 1 :(得分:3)

从我在该页面上看到的内容和链接页面(http://docs.julialang.org/en/latest/manual/control-flow/#man-short-circuit-evaluation),没有。操作顺序不同。它最终是这样的:

if (var1) && (var2 != 1)

首先,检查xscalar变量是否有满足if语句的值,就像你做的那样

if var1

然后,如果,并且只有在接受时,才会评估下一部分:

if var2 != 1

换句话说,这两个陈述大致相同:

if var1
    if var2 != 1

and

if var1 && var2 != 1

(原谅julia语法知识的缺失)

与此等效的python将是:

if var1 and var2 != 1:

或者,用括号更清晰地显示,

if (var1) and (var2 != 1) :