is Hash
Stash
是一个哈希,用于 Raku 中包作用域级别的符号表。
要获取 Stash,可以在包上调用 .WHO
伪方法(因为它回答了问题谁住在这里?),或者如果你将包名写成一个字面量,则附加两个冒号
say Boring::.^name; # OUTPUT: «Stash»say Boring.WHO === Boring::; # OUTPUT: «True»
由于它继承自 Hash
,因此你可以使用所有通常的哈希功能
say Boring::.keys.sort; # OUTPUT: «(&package_sub Nested)»say Boring::<Nested>; # OUTPUT: «(Nested)»
如上例所示,只有“our”作用域的东西出现在 Stash
中(嵌套类默认情况下是“our”,但可以用“my”排除。)词法和方法不包含在 Stash 中,因为它们不位于包表中。词法存在于一个单独的词法 pad 中,该 pad 仅在作用域内部可见。方法(如果包也是一个类)有一个单独的方法表,并且可以通过对类本身进行内省来访问,通过 .can
和 .^methods
。