See Original text in context
multi method defined( --> Bool)
Returns False
on a type object, and True
otherwise.
say Int.defined; # OUTPUT: «False»say 42.defined; # OUTPUT: «True»
A few types (like Failure) override defined
to return False
even for instances:
sub fails() ;say fails().defined; # OUTPUT: «False»
See Original text in context
multi sub defined(Mu --> Bool)
invokes the .defined
method on the object and returns its result.
See Original text in context
multi method defined(Failure: --> Bool)
Returns False
(failures are officially undefined), and marks the failure as handled.
sub f() ;my = f;say .handled; # OUTPUT: «False»say .defined; # OUTPUT: «False»say .handled; # OUTPUT: «True»
See Original text in context
multi method defined(Junction:)
Checks for definedness instead of Boolean values.
say ( 3 | Str).defined ; # OUTPUT: «True»say (one 3, Str).defined; # OUTPUT: «True»say (none 3, Str).defined; # OUTPUT: «False»
Failure
s are also considered non-defined:
my =Failure.new;say (one 3, ).defined; # OUTPUT: «True»
Since 6.d, this method will autothread.