Member function that is not inherited by subclasses
is Routine
A Submethod is a method that is not inherited by child classes. They are typically used for per-class initialization and tear-down tasks which are called explicitly per class in an inheritance tree, usually for enforcing a particular order. For example object construction with the BUILD
submethod happens from the least-derived to most-derived, so that the most-derived (child) classes can depend on the parent already being initialized.
Submethods are of type Submethod
, and are declared with the submethod
declarator:
Since submethods are not inherited, an interesting use case is precisely methods that are going to be called from the standard submethods such as BUILD
or TWEAK
.
my Hero .= new( name => "Þor",inventory => ( "Mjölnir", "Megingjörð", "Mjölnir" ) );say .inventory;# OUTPUT: «[Megingjörð Mjölnir]»
Invoking these methods make sense only in the specific context of the submethod it is invoked from.
multi method gist(Submethod:)
Returns the name of the submethod.