我做了一个拼写错误,用冒号语法调用一个方法。我错过了冒号后的空格和命名参数的第二个冒号。我用一个简单的类复制了我的问题:
class Test {
method myMethod {
say "myMethod";
say %_;
}
}
Test.new.myMethod:test<this>; #mistyped call
Test.new.myMethod: :test<this>; #actual call
#Test.new.myMethod:"some_string";
输出是:
myMethod
{}
myMethod
{test => this}
第一个调用的语法是什么意思,为什么它不是错误?干杯
foo:bar
,foo:<baz>
,foo:quux<waldo>
,foo:quux<waldo>:abc<def>
等形式的标识符是extended identifiers。
符号的长名称别名为其短名称,即标识符的第一个组成部分,因此在这种情况下,myMethod:test<this>
别名为myMethod
。