布尔

布尔逻辑

在此阅读关于布尔逻辑的详细内容。

Bool 是 Julia 中的布尔类型名,其值只能为 truefalse 之一。

运算

表达式名称
!x否定
x && y短路与
x || y短路或
julia> !true
false

julia> true && "foo"
"foo"

julia> false || "foo"
"foo"

julia> true || "foo"
true

布尔在 Julia 中其实是整数的一类(Bool <: Integer),即 false 可以被提升为 0,而 true 可以被提升为 1。

特别地,false 可以用于如下功能:

julia> NaN * 0
NaN

julia> NaN * false
0.0

短路

短路是一个重要的特性,它是说:如果一个布尔逻辑表达式的第一个参数已经确定了整个表达式的值,则第二个参数根本不会被计算。

julia> a = 0
0

julia> false && begin a=1; a==2 end
false

julia> a
0

julia> true || begin a=1; a==2 end
true

julia> a
0

上例中 begin a=1; a==2 end 没有被计算,因此没有进行 a = 1 的赋值操作。

缺失

缺失类型 Missing 具有唯一的实例 missing。它表示其字面意思,即“值缺失”。[1]这一语义在数据科学中常被用到。

对于大部分数学函数,missing 会传递:

julia> missing == missing
missing

julia> missing + 8
missing

missing 有三种判断方式:

julia> ismissing(missing)
true

julia> isequal(missing, missing)
true

julia> missing === missing
true

特别地,对于 islessmissing 被认为比任何其它值大。

三值逻辑

三值逻辑是由 truefalsemissing 共同组成的。这里 missing 可以视作“未知是 true 还是 false”

对于二元运算,禁止将 missing 放在左侧,并满足短路规则。

julia> true || missing # 短路原则
true

julia> false || missing
missing

  • 1

    这与一些语言的 null 相似,但不完全相同