enum Bool <False True>

布尔真/假决策的枚举。

方法§

方法 ACCEPTS§

method ACCEPTS(Bool:D: --> Bool:D)

用于智能匹配比较。当右侧为 True 时,始终返回 True,当匹配的右侧为 False 时,始终返回 False。特别是,ACCEPTS 始终返回调用它的实例,即智能匹配的右侧。例如

my $b = Bool.newTrue );
# when True on the right side returns 
# always True 
True  ~~ $b;     # True 
False ~~ $b;     # True 
 
$b = Bool.newFalse );
# when False on the right side 
# returns always False 
False ~~ $b;     # False 
True ~~ $b;      # False 

例程 succ§

method succ(--> Bool:D)

返回 True

say True.succ;                                    # OUTPUT: «True␤» 
say False.succ;                                   # OUTPUT: «True␤»

succ 是“后继”的缩写;它返回下一个枚举值。Bool 是一个只有两个值的特殊枚举,FalseTrue。排序时,False 优先,因此 True 是它的后继。由于 True 是“最高”的 Bool 枚举值,因此它自己的后继也是 True

例程 pred§

method pred(--> Bool:D)

返回 False

say True.pred;                                    # OUTPUT: «False␤» 
say False.pred;                                   # OUTPUT: «False␤»

pred 是“前驱”的缩写;它返回上一个枚举值。Bool 是一个只有两个值的特殊枚举,FalseTrue。排序时,False 优先,因此 FalseTrue 的前驱。由于 False 是“最低”的 Bool 枚举值,因此它自己的前驱也是 False

例程 enums§

method enums(--> Hash:D)

返回枚举对的 Hash。适用于 Bool 类型和任何键。

say Bool.enums;                                   # OUTPUT: «{False => 0, True => 1}␤» 
say False.enums;                                  # OUTPUT: «{False => 0, True => 1}␤»

例程 pick§

multi method pick(Bool:U: --> Bool:D)
multi method pick(Bool:U: $count --> Seq:D)

返回 True 和/或 False 的随机选择。

如果它在没有参数的情况下被调用,那么它只返回一个选择

say Bool.pick;                                    # OUTPUT: «True␤»

如果它与一个 $count 被调用,那么它返回一个只有一个选择的 Seq

say Bool.pick(1);                                 # OUTPUT: «(False)␤»

如果 $count* 或大于或等于 2,那么它返回一个带有两个元素的 Seq -- True 然后 False,或 False 然后 True

say Bool.pick(*);                                 # OUTPUT: «(False True)␤»

例程 roll§

multi method roll(Bool:U --> Bool:D)
multi method roll(Bool:U $count --> Seq:D)

如果在没有参数的情况下调用,则返回 TrueFalse。否则返回随机选择的 $count 个元素。请注意,从 enum 中的每个随机选择都是独立进行的,就像一个单独的掷硬币,其中硬币的每一面代表 enum 的两个值之一。如果将 * 作为 $count 传递,则返回一个无限的 SeqBool

say Bool.roll;                                    # OUTPUT: «True␤» 
say Bool.roll(3);                                 # OUTPUT: «(True False False)␤» 
say Bool.roll(*);                                 # OUTPUT: «(...)␤»

例程 Int§

multi method Int(Bool:D --> Int:D)

返回enum对的值部分。

say False.Int;                                # OUTPUT: «0␤» 
say True.Int;                                 # OUTPUT: «1␤»

例程 Numeric§

multi method Numeric(Bool:D --> Int:D)

返回enum对的值部分。

say False.Numeric;                                # OUTPUT: «0␤» 
say True.Numeric;                                 # OUTPUT: «1␤»

运算符§

前缀 ?§

multi prefix:<?>(Mu --> Bool:D)

将参数强制转换为Bool

前缀 so§

multi prefix:<so>(Mu --> Bool:D)

将参数强制转换为Bool,优先级低于prefix:<?>

类型图§

Bool 的类型关系
raku-type-graph Bool Bool Int Int Bool->Int Mu Mu Any Any Any->Mu Cool Cool Cool->Any Numeric Numeric Real Real Real->Numeric Int->Cool Int->Real

展开上方的图表