【发布时间】:2023-03-14 18:19:01
【问题描述】:
我对 Julia 中的链式比较有疑问。我读了this section in the manual,但还不清楚。
在 Julia 中,这样做:
if var1 && var2 != 1
意思是(在 Python 中):
if (var1 and var2) != 1:
谢谢!
【问题讨论】:
标签: comparison-operators chained julia
我对 Julia 中的链式比较有疑问。我读了this section in the manual,但还不清楚。
在 Julia 中,这样做:
if var1 && var2 != 1
意思是(在 Python 中):
if (var1 and var2) != 1:
谢谢!
【问题讨论】:
标签: comparison-operators chained julia
您总是可以引用一个表达式来查看解析器如何解释它:
julia> :(var1 && var2 != 1)
:(var1 && (var2!=1))
在这种情况下,!= 比&& 绑定得更紧密。这是具有这两个运算符的语言(例如 C 和 Java)的标准优先级。
【讨论】:
从我在该页面和链接页面 (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) :
【讨论】:
if (xscalar) and (dim != 1) ?