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对象(我预计它已经知道是谁制作的)。 –