我试图动态地向对象添加新方法.
以下代码工作正常:
use SomeClass; my $obj = SomeClass.new; my $blah = 'ping'; my $coderef = method { say 'pong'; } $obj.^add_method($blah,$coderef); $obj.ping;
这会按预期打印“pong”,而以下内容将无法正常工作:
use SomeClass; my $obj = SomeClass.new; my %hash = one => 1,two => 2,three => 3; for %hash.kv -> $k,$v { my $coderef = method { print $v; } $obj.^add_method($k,$coderef); } $obj.one; $obj.two; $obj.three;
将打印111或333.
任何人都可以解释我错过了什么,或者为什么结果与我的期望不同?