关于逻辑运算的一点问题

我刚刚学习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

十分感谢!帮大忙了!