routine Bool
Documentation for routine Bool
assembled from the following types:
class NumStr
From NumStr
(NumStr) method Bool
Defined as:
multi method Bool(NumStr:D: --> Bool:D)
This method may be provided by the parent classes and not implemented in NumStr directly.
Returns False
if the invocant is numerically ±0e0
, otherwise returns True
. String portion is not considered.
class ComplexStr
From ComplexStr
(ComplexStr) method Bool
Defined as:
multi method Bool(ComplexStr:D: --> Bool:D)
This method may be provided by the parent classes and not implemented in ComplexStr directly.
Returns False
if the invocant is numerically ±0±0i
, otherwise returns True
. String portion is not considered.
role Setty
From Setty
(Setty) method Bool
Defined as:
multi method Bool(Setty:D: --> Bool:D)
Returns True
if the invocant contains at least one element.
my $s1 = Set.new(1, 2, 3); say $s1.Bool; # OUTPUT: «True» my $s2 = $s1 ∩ Set.new(4, 5); # set intersection operator say $s2.Bool; # OUTPUT: «False»
class Failure
From Failure
(Failure) method Bool
Defined as:
multi method Bool(Failure:D: --> Bool:D)
Returns False
, and marks the failure as handled.
sub f() { fail }; my $v = f; say $v.handled; $v.Bool; say $v.handled; # OUTPUT: «False # True»
class RatStr
From RatStr
(RatStr) method Bool
Defined as:
multi method Bool(RatStr:D: --> Bool:D)
This method may be provided by the parent classes and not implemented in RatStr directly.
Returns False
if the numerator of the numeric portion is 0
, otherwise returns True
. This applies for < 0/0 >
zero-denominator RatStr as well, despite ?< 0/0 >.Num
being True
. String portion is not considered.
class Match
From Match
(Match) method Bool
Defined as:
method Bool(Capture:D: --> Bool:D)
Returns True
on successful and False
on unsuccessful matches. Please note that any zero-width match can also be successful.
say 'abc' ~~ /^/; # OUTPUT: «「」» say $/.from, ' ', $/.to, ' ', ?$/; # OUTPUT: «0 0 True»
class Str
From Str
(Str) method Bool
Defined as:
method Bool(Str:D: --> Bool:D)
Returns False
if the string is empty, True
otherwise.
class IntStr
From IntStr
(IntStr) method Bool
Defined as:
multi method Bool(IntStr:D: --> Bool:D)
This method may be provided by the parent classes and not implemented in IntStr directly.
Returns False
if the invocant is numerically 0
, otherwise returns True
. String portion is not considered.
role Blob
From Blob
(Blob) method Bool
Defined as:
multi method Bool(Blob:D:)
Returns False
if and only if the buffer is empty.
my $blob = Blob.new(); say $blob.Bool; # OUTPUT: «False» $blob = Blob.new([1, 2, 3]); say $blob.Bool; # OUTPUT: «True»
role Baggy
From Baggy
(Baggy) method Bool
Defined as:
method Bool(Baggy:D: --> Bool:D)
Returns True
if the invocant contains at least one element.
my $breakfast = ('eggs' => 1).BagHash; say $breakfast.Bool; # OUTPUT: «True (since we have one element)» $breakfast<eggs> = 0; # weight == 0 will lead to element removal say $breakfast.Bool; # OUTPUT: «False»
class Regex
From Regex
(Regex) method Bool
multi method Bool(Regex:D: --> Bool:D)
Matches against the caller's $_ variable, and returns True
for a match or False
for no match.
class Proc
From Proc
(Proc) method Bool
multi method Bool(Proc:D:)
Awaits for the process to finish and returns True
if both exit code and signal of the process were 0, indicating a successful process termination. Returns False
otherwise.
class Promise
From Promise
(Promise) method Bool
multi method Bool(Promise:D:)
Returns True
for a kept or broken promise, and False
for one in state Planned
.
class Map
From Map
(Map) method Bool
Defined as:
method Bool(Map:D: --> Bool:D)
Returns True
if the invocant contains at least one key/value pair.
my $m = Map.new('a' => 2, 'b' => 17); say $m.Bool; # OUTPUT: «True»
class List
From List
(List) method Bool
Defined as:
method Bool(List:D: --> Bool:D)
Returns True
if the list has at least one element, and False
for the empty list.
say ().Bool; # OUTPUT: «False» say (1).Bool; # OUTPUT: «True»
class Numeric
From Numeric
(Numeric) method Bool
multi method Bool(Numeric:D:)
Returns False
if the number is equivalent to zero, and True
otherwise.
class Junction
From Junction
(Junction) method Bool
Defined as:
multi method Bool(Junction:D:)
Collapses the Junction
and returns a single Boolean value according to the type and the values it holds. Every element is transformed to Bool
.
my $n = Junction.new( "one", 1..6 ); say $n.Bool; # OUTPUT: «False»
All elements in this case are converted to True
, so it's false to assert that only one of them is.
my $n = Junction.new( "one", <0 1> ); say $n.Bool; # OUTPUT: «True»
Just one of them is truish in this case, 1
, so the coercion to Bool
returns True
.
role Rational
From Rational
(Rational) method Bool
Defined as:
multi method Bool(Rational:D: --> Bool:D)
Returns False
if numerator is 0
, otherwise returns True
. This applies for <0/0>
zero-denominator Rational as well, despite ?<0/0>.Num
being True
.
class StrDistance
From StrDistance
(StrDistance) method Bool
Returns True
if before
is different from after
.
class Capture
From Capture
(Capture) method Bool
Defined as:
method Bool(Capture:D: --> Bool:D)
Returns True
if the Capture
contains at least one named or one positional argument.
say \(1,2,3, apples => 2).Bool; # OUTPUT: «True» say \().Bool; # OUTPUT: «False»
class Mu
From Mu
(Mu) routine Bool
multi sub Bool(Mu --> Bool:D) multi method Bool( --> Bool:D)
Returns False
on the type object, and True
otherwise.
Many built-in types override this to be False
for empty collections, the empty string or numerical zeros
say Mu.Bool; # OUTPUT: «False» say Mu.new.Bool; # OUTPUT: «True» say [1, 2, 3].Bool; # OUTPUT: «True» say [].Bool; # OUTPUT: «False» say %( hash => 'full' ).Bool; # OUTPUT: «True» say {}.Bool; # OUTPUT: «False» say "".Bool; # OUTPUT: «False» say 0.Bool; # OUTPUT: «False» say 1.Bool; # OUTPUT: «True» say "0".Bool; # OUTPUT: «True»