警告:该角色是 Rakudo 实现的一部分,不是语言规范的一部分。
类型可能具有与之关联的 stash,它是一个命名哈希,包含该类型包的我们作用域的符号。在这种情况下,它们可以像命名空间一样使用;你可以使用它们的 WHO
属性或 ::
调度运算符获取它们的 stash
say Nested::Namespace::Symbol; # OUTPUT: «(Namespace)»say Nested.WHO<Namespace>.WHO<Symbol>; # OUTPUT: «(Namespace)»
Metamodel::Stashing
是处理为类型创建和设置 stash 对象的元角色。使用此元角色的类型应支持命名,因此在编写执行此操作的自定义 HOW 时,请确保它们还执行 Metamodel::Naming
。
方法§
方法 add_stash§
method add_stash()
为类型创建并设置 stash,返回 $type_obj
。
此方法通常在创建新类型时作为最后一步调用。例如,这是如何在仅支持命名和 stash 的最小 HOW 中使用它的
does Metamodel::Namingdoes Metamodel::Stashingmy Mu constant WithStash = WithStashHOW.new_type: :name<WithStash>;say WithStash.WHO; # OUTPUT: «WithStash»