使用冒号语法的方法调用错误。没错但是这是什么意思?

时间:2019-03-13 22:47:53

标签: perl6

我打了一个错字,用冒号语法调用一个方法。我错过了冒号和第二个冒号后面的空格,用于命名参数。我用一个简单的类重复了我的问题:

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}
  1. 第一个myMethod调用,没有错误,没有命名参数。
  2. 第二部作品符合预期。
  3. 第三个生成冒号对编译 时间错误

第一个调用的语法是什么意思,为什么它不是错误?干杯

1 个答案:

答案 0 :(得分:8)

foo:barfoo:<baz>foo:quux<waldo>foo:quux<waldo>:abc<def>等形式的标识符为extended identifiers

符号的长名别名为其短名,即标识符的第一部分,因此在这种情况下,myMethod:test<this>被别名为myMethod