我对这段代码感到困惑,我显然无法在字符串连接中调用WHAT
方法?为什么Perl 6的字符串连接不像.WHAT?
my $object = 'Camelia';
say $object;
say $object.WHAT;
say "^name: The object is a " ~ $object.^name;
say "WHAT: The object is a " ~ $object.WHAT;
输出显示了呼叫^name
作品(从Metamodel::ClassHOW一元方法),但Perl 6的被.WHAT
困惑,如果有一个优先问题。
Camelia
(Str)
^name: The object is a Str
Use of uninitialized value of type Str in string context
Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at meta_methods.p6 line 7
WHAT: The object is a
我的Perl 6:
This is Rakudo version 2015.12-219-gd67cb03 built on MoarVM version 2015.12-29-g8079ca5
implementing Perl 6.c.
它似乎真的坏了,它会在一些情况下,而不是其他人。 –
这个想法是,如果你连接一个值,你期望它是一个适当的价值。如果你期望得到一个未定义的值,你会使用.perl和朋友(如果你想要“(Str)”)或。^ name(如果你想要“Str”)。 – timotimo
@briandfoy我改写了我的答案。也许我的新答案会更有意义。 – raiph