HClO
1
我刚刚学习julia,在逻辑运算的时候遇到了一点问题。julia好像和别的语言不太一样,并不是用and or not作为运算符,而是& | !这三个符号,以及短路求值(?不太懂这是什么意思)。我在实际操作的时候发现了以下的现象:
1==1 | 1==2
#返回true
1==2 | 1==1
#返回false,这个就是我不能理解的点
(1==2) | (1==1)
#返回true,又正常了
1==2 || 1==1
#返回true,这个不加括号也正常
为什么第2行返回的是false?可以帮我解答一下疑惑吗?谢谢。
单个的 &
和 |
表示这是位运算,位运算的优先级比 ==
要高
逻辑运算是 &&
和 ||
,逻辑运算的优先级比 ==
要低
逻辑运算采用短路求值,说的是,对一串&&
只要遇到了一个false
就直接返回false
而不去计算后面的内容,对||
则是true
.
julia> true || error("this never errors")
true
julia> true | error("this could error")
ERROR: this could error
1 个赞
短路求值最常见的用法是用来检查参数
is_valid_arguments(args...) || error("invalid arguments")
和二元版本的?:
is_even(x) || (x = x+1)
# equivalent to
x = is_even(x) ? x : x+1