5

我对 Julia 中的链式比较有疑问。我在手册中阅读了这一部分,但仍不清楚。

在 Julia 中,这样做:

if var1 && var2 != 1

意思是这个(在 Python 中):

if (var1 and var2) != 1:

谢谢!

4

2 回答 2

13

您始终可以引用表达式以查看解析器如何解释它:

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

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

于 2013-08-22T17:10:52.890 回答
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) :
于 2013-08-22T13:13:04.480 回答