我對這段代碼感到困惑,我顯然無法在字符串連接中調用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