Юлия - оценка короткого замыкания

Язык программирования Julia

Булевы операторы && и || называются оценкой короткого замыкания.

Они объединяют последовательность логических выражений, оценивая только наименьшее количество выражений, чтобы определить логическое значение всей цепочки.

В выражении 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