码迷,mamicode.com
首页 > 其他好文 > 详细

Julia - 短路求值

时间:2018-08-26 01:22:35      阅读:877      评论:0      收藏:0      [点我收藏+]

标签:none   amp   tac   ack   类型   int   erro   level   julia   

&& 和 || 的布尔运算符被称为短路求值

它们连接一系列布尔表达式,仅计算最少的表达式来确定整个链的布尔值

在表达式 a && b 中,只有 a 为 true 时才计算子表达式 b

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 中,只有 a 为 false 时才计算子表达式 b

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

&& 比 || 优先级高

julia> false || true && false
false

&& 和 || 可以用 if 语句来表示

&&

expression && statement

# 可以写成 if 语句

if expression
	statement
end

expression 从而 statement

||

expression || statement

# 可以写成 if 语句

if !expression
	statement
end

expression 要不就 statement

&& 和 || 的运算对象也必须是布尔值,即为 true 或 false,不能用 1 和 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

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> 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 全为真,结果也为真

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

 

Julia - 短路求值

标签:none   amp   tac   ack   类型   int   erro   level   julia   

原文地址:https://www.cnblogs.com/sch01ar/p/9535897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!