Булевы операторы && и || называются оценкой короткого замыкания.
Они объединяют последовательность логических выражений, оценивая только наименьшее количество выражений, чтобы определить логическое значение всей цепочки.
В выражении a && b подвыражение b оценивается только в том случае, если a истинно
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | julia> f(x) = (println(x); true) f (generic function with 1 method) julia> g(x) = (println(x); false) g (generic function with 1 method) julia> f(1) && f(2) 1 2 true julia> f(1) && g(2) 1 2 false julia> g(1) && f(2) 1 false julia> g(1) && g(2) 1 false |
В выражении a || b подвыражение b оценивается только в том случае, если a ложно
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | julia> f(x) = (println(x); true) f (generic function with 1 method) julia> g(x) = (println(x); false) g (generic function with 1 method) julia> f(1) || f(2) 1 true julia> f(1) || g(2) 1 true julia> g(1) || f(2) 1 2 true julia> g(1) || g(2) 1 2 false |
&& имеет приоритет над ||
?| 1 2 | julia> false || true && false false |
&& и || могут быть представлены оператором if
&&
?| 1 2 3 4 5 6 7 | expression && statement # 可以写成 if 语句 if expression statement end |
выражение и, таким образом, утверждение
||
?| 1 2 3 4 5 6 7 | expression || statement # 可以写成 if 语句 if !expression statement end |
выражение или утверждение
Операнд && и || также должен быть логическим значением, то есть истинным или ложным, и не может быть заменен 1 и 0.
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | julia> 1 && true ERROR: TypeError: non-boolean (Int64) used in boolean context Stacktrace: [1] top-level scope at none: 0 julia> 0 && true ERROR: TypeError: non-boolean (Int64) used in boolean context Stacktrace: [1] top-level scope at none: 0 julia> 1 || true ERROR: TypeError: non-boolean (Int64) used in boolean context Stacktrace: [1] top-level scope at none: 0 julia> 0 || true ERROR: TypeError: non-boolean (Int64) used in boolean context Stacktrace: [1] top-level scope at none: 0 |
Последним элементом краткой оценки может быть выражение любого типа, которое можно вычислить и вернуть.
?| 1 2 3 4 5 6 7 8 9 10 11 | julia> true && (x = 2) 2 julia> false && (x = 2) false julia> true || (x = 2) true julia> false || (x = 2) 2 |
операторы оценки без короткого замыкания, вы можете использовать побитовые логические операторы & и |
& является операцией И. В операции И верны только две истины, то есть a && b, оба a и b истинны, и результат верен.
| является операцией ИЛИ, и одна из операций ИЛИ истинна, то есть верно a || b, a или b, результат верен; a и b оба верны, результат также верен
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | julia> true & true true julia> true & false false julia> false & true false julia> false & false false julia> true | true true julia> true | false true julia> false | true true julia> false | false false |