Represents a group of roles with different parameterizations
does Metamodel::Namingdoes Metamodel::Documentingdoes Metamodel::Stashingdoes Metamodel::TypePretensedoes Metamodel::RolePunningdoes Metamodel::BoolificationProtocol
Warning: this role is part of the Rakudo implementation, and is not a part of the language specification.
ParametricRoleGroupHOW groups a set of
ParametricRoleHOW, every one of them representing a single role declaration with their own parameter sets.
([::T] ).HOW.say; # OUTPUT: «Perl6::Metamodel::ParametricRoleHOW.new␤»Zape.HOW.say ; # OUTPUT: «Perl6::Metamodel::ParametricRoleGroupHOW.new␤»
ParametricRoleHOWs need to be added to this kind of group:
my \zape := Metamodel::ParametricRoleGroupHOW.new_type( name => "zape");my \zipi := Metamodel::ParametricRoleHOW.new_type( name => "zipi", group => zape);say zipi.HOW; # OUTPUT: «Perl6::Metamodel::ParametricRoleHOW.new␤»
Note: As most of the
Metamodel classes, this class is here mainly for illustration purposes and it's not intended for the final user to instantiate.
Metamodel::ParametricRoleGroupHOW does role Metamodel::Naming, which provides the following routines:
Returns the name of the metaobject, if any.
say 42.^name; # OUTPUT: «Int␤»
method set_name(, )
Sets the new name of the metaobject.
Metamodel::ParametricRoleGroupHOW does role Metamodel::Stashing, which provides the following routines:
Creates and sets a stash for a type, returning
This method is typically called as the last step of creating a new type. For example, this is how it would be used in a minimal HOW that only supports naming and stashing:
does Metamodel::Namingdoes Metamodel::Stashingmy Mu constant WithStash = WithStashHOW.new_type: :name<WithStash>;say WithStash.WHO; # OUTPUT: «WithStash␤»