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
404
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»