我做了一个错字,用冒号语法调用一个方法。我错过了冒号和第二个冒号后面的空格,用于命名参数。我用一个简单的类重复了我的问题:
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";
Run Code Online (Sandbox Code Playgroud)
输出为:
myMethod
{}
myMethod
{test => this}
Run Code Online (Sandbox Code Playgroud)
首次调用的语法是什么意思,为什么不是错误?干杯
形式的标识符foo:bar,foo:<baz>,foo:quux<waldo>,foo:quux<waldo>:abc<def>等是扩展标识符。
符号的长名别名为其短名,即标识符的第一部分,因此在这种情况下myMethod:test<this>别名为myMethod。