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

问题描述 投票:7回答:1

我做了一个拼写错误,用冒号语法调用一个方法。我错过了冒号后的空格和命名参数的第二个冒号。我用一个简单的类复制了我的问题:

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. 第三个生成冒号对编译时错误

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

perl6
1个回答
8
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.