5
这是来自我以前的Why is Perl 6's unwrap method a method of Routine?的一个持续问题,但大多数情况下并不相关。为什么我不能在Routine :: WrapHandle上调用元方法?
的wrap
方法记录在案,以返回“之称WrapHandle一个私有的类的实例,除此之外为奇数对泄漏一类是私有的,它不是真正的那个回来的东西的名字的类实际上是Routine::WrapHandle
。: 。
$ perl6
> sub f() { say 'f was called' }
sub f() { #`(Sub|140397740886648) ... }
> my $wrap-handle = &f.wrap({ say 'before'; callsame; say 'after' });
Routine::WrapHandle.new
但这里的问题,我想叫.^methods
上Routine::WrapHandle
这并不工作:
> Routine::WrapHandle.^methods
Could not find symbol '&WrapHandle'
in block <unit> at <unknown file> line 1
这是一样的尝试它在一个未定义的C ^姑娘的名字:
> Foo::Baz.^methods
Could not find symbol '&Baz'
in block <unit> at <unknown file> line 1
我可以调用虽然实例元方法:
> $wrap-handle.^methods
(restore)
> $wrap-handle.^name
Routine::WrapHandle
这是怎么回事呢?
这是[词汇班级](https://github.com/rakudo/rakudo/search?&q=WrapHandle&type=) –