4
我可以調用的對象上^methods
並列出方法名我可以調用:爲什麼我不能在Perl 6的ClassHOW對象上調用methods方法?
my $object = 'Camelia';
my @object_methods = $object.^methods;
@object_methods.map({ .gist }).sort.join("\n").say;
^methods
返回其餘存儲在@object_methods
列表,然後後來我通過對每一個呼叫gist
變換方法thingys的該列表以獲得該方法的人類合理形式。
但是,在^methods
的^
是在object documentation結束隱含.HOW
,如顯示這應該工作太:
my $object = 'Camelia';
my @object_methods = $object.HOW.methods;
但是,我得到一個錯誤:
Too few positionals passed; expected 2 arguments but got 1
in any methods at gen/moar/m-Metamodel.nqp line 490
in block <unit> at...
而且,因爲它是值得的,對於那種試圖對這類事情友善的用戶來說,這是一個糟糕的錯誤信息。文件m-Metamodel.nqp不是我的perl6安裝的一部分。這甚至不是我可以谷歌的東西,因爲,正如路徑所示,這是編譯生成的東西。而且,該編譯取決於版本。
這哪裏是記錄? –
在與鏈接到的語言/對象完全相同的文檔中,它表示:「元對象方法的調用約定是調用元對象上的方法,並將感興趣的對象作爲第一個參數傳遞給對象。 「,並且還說」說1. ^姓名「與「相同」「說1.HOW.name(1);」 – timotimo
這是一個我現在看得更清楚的例子,但缺少[方法文檔](http://doc.perl6.org/routine/methods#role_Metamodel::MethodContainer)。它注意到它檢查了一個類,它確實顯示了一個$ obj參數,但我期望它是ClassHOW對象(我預計它已經知道是誰製作的)。 –