我打了一个错字,用冒号语法调用一个方法。我错过了冒号和第二个冒号后面的空格,用于命名参数。我用一个简单的类重复了我的问题:
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}
第一个调用的语法是什么意思,为什么它不是错误?干杯
答案 0 :(得分:8)
foo:bar
,foo:<baz>
,foo:quux<waldo>
,foo:quux<waldo>:abc<def>
等形式的标识符为extended identifiers。
符号的长名别名为其短名,即标识符的第一部分,因此在这种情况下,myMethod:test<this>
被别名为myMethod
。