Documentation for routine defined assembled from the following pages:
Class: Mu §
From Mu
(Mu) method defined §
Declared as
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»
Class: Mu §
From Mu
(Mu) routine defined §
Declared as
multi sub defined(Mu --> Bool)
invokes the .defined method on the object and returns its result.
Class: Failure §
From Failure
(Failure) method defined §
Defined as:
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»
Class: Junction §
From Junction
(Junction) method defined §
Defined as:
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»
Failures are also considered non-defined:
my =Failure.new;say (one 3, ).defined; # OUTPUT: «True»
Since 6.d, this method will autothread.