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