朱莉娅链式比较的优先级,"var1 && var2 != 1"的意思是"(var1 and var2) != 1"吗?



我有一个关于Julia中链式比较的问题。我阅读了手册中的这一部分,但仍不清楚。

在Julia,这样做:

if var1 && var2 != 1

意思是(在Python中):

if (var1 and var2) != 1:

谢谢!

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

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

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

根据我在该页面和链接页面上看到的内容(http://docs.julialang.org/en/latest/manual/control-flow/#man-短路评估),否。操作顺序不同。结果是这样的:

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) :

最新更新