Rules / Types, classes & roles / basic

Submethod Reference

Member function that is not inherited by subclasses

What it is #

Routines #

Signatures are reproduced from the documentation, including their declared return types. A routine listed here is part of the type's published interface; whether Raku++ implements it is a separate question, answered by the examples below.

method gist #

multi method gist(Submethod:D:)

Returns the name of the submethod.

Examples, run three ways #

Every example below comes from the official documentation, together with the output that documentation asserts. Each was then executed by Rakudo and by Raku++ when this page was built. Where the three agree, one result is shown; where they do not, all three are — because which of them is wrong is exactly the information worth having.

2 no-output · 1 ok

class Submethod is Routine {}

Not executed: the documentation states no expected output for this example.

class Area {
    has $.size;
    submethod BUILD(:$x, :$y, :$z) {
        $!size = $x * $y * $z;
    }
}

Not executed: the documentation states no expected output for this example.

class Hero {
has @.inventory;
has Str $.name;
submethod BUILD( :$!name, :@!inventory ) {
    @!inventory = self.clean-inventory( @!inventory );
}
submethod clean-inventory( @inventory ) {
    @!inventory.unique.sort
}
}

my Hero $þor .= new( name => "Þor",
                 inventory => ( "Mjölnir", "Megingjörð", "Mjölnir" ) );
say $þor.inventory;
# OUTPUT: «[Megingjörð Mjölnir]␤»
Output
[Megingjörð Mjölnir]

Documentation, Rakudo and Raku++ all agree.