enum Bool <False True>
An enum for Boolean true/false decisions.
Methods§
method ACCEPTS§
method ACCEPTS(Bool:D: --> Bool:D)
Used for smartmatch comparison. When the right side is True
returns always True
, when the right side of the match is False
returns always False
. In particular, ACCEPTS
returns always the instance on which it is invoked, that is the right side of a smartmatch. As an example:
my $b = Bool.new( True ); # when True on the right side returns # always True True ~~ $b; # True False ~~ $b; # True $b = Bool.new( False ); # when False on the right side # returns always False False ~~ $b; # False True ~~ $b; # False
routine succ§
method succ(--> Bool:D)
Returns True
.
say True.succ; # OUTPUT: «True» say False.succ; # OUTPUT: «True»
succ
is short for "successor"; it returns the next enum value. Bool is a special enum with only two values, False
and True
. When sorted, False
comes first, so True
is its successor. And since True
is the "highest" Bool enum value, its own successor is also True
.
routine pred§
method pred(--> Bool:D)
Returns False
.
say True.pred; # OUTPUT: «False» say False.pred; # OUTPUT: «False»
pred
is short for "predecessor"; it returns the previous enum value. Bool is a special enum with only two values, False
and True
. When sorted, False
comes first, so False
is the predecessor to True
. And since False
is the "lowest" Bool enum value, its own predecessor is also False
.
routine enums§
method enums(--> Hash:D)
Returns a Hash
of enum-pairs. Works on both the Bool
type and any key.
say Bool.enums; # OUTPUT: «{False => 0, True => 1}» say False.enums; # OUTPUT: «{False => 0, True => 1}»
routine pick§
multi method pick(Bool:U: --> Bool:D) multi method pick(Bool:U: $count --> Seq:D)
Returns a random pick of True
and/or False
.
If it's called without an argument then it returns just one pick:
say Bool.pick; # OUTPUT: «True»
If it's called with a $count
of one then it returns a Seq
with just one pick:
say Bool.pick(1); # OUTPUT: «(False)»
If $count
is *
or greater than or equal to two then it returns a Seq
with two elements -- either True
then False
, or False
then True
:
say Bool.pick(*); # OUTPUT: «(False True)»
routine roll§
multi method roll(Bool:U --> Bool:D) multi method roll(Bool:U $count --> Seq:D)
Returns True
or False
if called without any argument. Otherwise returns $count
elements chosen at random. Note that each random choice from the enum
is made independently, like a separate coin toss where each side of the coin represents one of the two values of the enum
. If *
is passed as $count
an infinite Seq
of Bool
s is returned.
say Bool.roll; # OUTPUT: «True» say Bool.roll(3); # OUTPUT: «(True False False)» say Bool.roll(*); # OUTPUT: «(...)»
routine Int§
multi method Int(Bool:D --> Int:D)
Returns the value part of the enum
pair.
say False.Int; # OUTPUT: «0» say True.Int; # OUTPUT: «1»
routine Numeric§
multi method Numeric(Bool:D --> Int:D)
Returns the value part of the enum
pair.
say False.Numeric; # OUTPUT: «0» say True.Numeric; # OUTPUT: «1»
Operators§
prefix ?§
multi prefix:<?>(Mu --> Bool:D)
Coerces its argument to Bool
.
prefix so§
multi prefix:<so>(Mu --> Bool:D)
Coerces its argument to Bool
, has looser precedence than prefix:<?>
.