特质是否仅适用于对象?
再次在这个问题的尾部,我试图will用这个(打高尔夫球的)代码使特征起作用:
sub show-value( $a-var ) {
say "Value of {$a-var.^name} is ", $a-var.gist;
}
sub do-stuff () {
ENTER { say "Going in"; }
our $bar will enter { show-value($_) };
$bar = "baz";
LEAVE { say "Leaving"; }
}
do-stuff();
这只是打印“进入”。如果您在全局范围内执行此操作,则它(不会)以相同的方式工作。请注意,这几乎是文档示例的直接实现。
回答
你还没有注意到你的乐堂版本。听起来像是今年引入的错误。
使用 glot.io 运行相同的代码:
v2021.02.1
Going in
Value of Any is (Any)
Leaving
- FWIW,我认为没有错误。对“will”特性的实际作用存在严重的误解。