यह मेरे पिछले एक Why is Perl 6's unwrap method a method of Routine? से एक सतत प्रश्न है, लेकिन अधिकतर असंबद्ध है।मैं रूटिन :: लपेटें पर मेटा विधियों को क्यों नहीं कॉल कर सकता हूं?
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
यह वही है एक अपरिभाषित ग पर यह कोशिश कर के रूप में लड़की का नाम:
> $wrap-handle.^methods
(restore)
> $wrap-handle.^name
Routine::WrapHandle
वहाँ पर क्या हो रहा है:
> Foo::Baz.^methods
Could not find symbol '&Baz'
in block <unit> at <unknown file> line 1
मैं उदाहरण हालांकि पर मेटा तरीकों कॉल कर सकते हैं?
यह एक [लेक्सिकल क्लास] है (https://github.com/rakudo/rakudo/search?&q=WrapHandle&type=) –