role Metamodel::ParametricRoleGroupHOW
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.
A 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»
ParametricRoleHOW
s 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.
Type Graph
Routines supplied by role Metamodel::Naming
Metamodel::ParametricRoleGroupHOW does role Metamodel::Naming, which provides the following routines:
(Metamodel::Naming) method name
method name()
Returns the name of the metaobject, if any.
say 42.^name; # OUTPUT: «Int»
(Metamodel::Naming) method set_name
method set_name(, )
Sets the new name of the metaobject.
Routines supplied by role Metamodel::Stashing
Metamodel::ParametricRoleGroupHOW does role Metamodel::Stashing, which provides the following routines:
(Metamodel::Stashing) method add_stash
method add_stash()
Creates and sets a stash for a type, returning $type_obj
.
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»