在变量中§
请参阅主要文档 in context,了解augment 声明符
使用 augment
,您可以向现有类和语法添加方法,但不能添加属性,前提是您首先激活了 MONKEY-TYPING
pragma。
由于类通常是 our
作用域的,因此是全局的,这意味着修改全局状态,这是强烈不鼓励的。对于几乎所有情况,都有更好的解决方案。
# don't do thisuse MONKEY-TYPING;augmentsay 42.is-answer; # OUTPUT: «True»
(在这种情况下,更好的解决方案是使用 函数)。
对于一个更好、更安全的示例,这是一个创建类模块以通过添加当前缺少的方法来扩展 IO::Path
的实用方法,以生成删除 extension
后留下的 basename
部分。(请注意,对于该部分的名称或甚至应该如何构建该部分,没有明确的开发者共识。)
unit is IO::Path;method new(|c)use MONKEY-TYPING;augment