これは私の前の1つである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
しかし、ここでは質問です私はRoutine::WrapHandle
に.^methods
を呼び出すしたい動作しないこと:。。
> 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=) –