情况似乎是这样的:
class Foo { has $!bar }; say Foo.new( :3bar ).perl # OUTPUT: «Foo.new?» 
文档说它依赖于实现,但我想知道这是否真的有意义.
Eli*_*sen 10
该.perl输出是正确的.  Foo.new( :3bar )并没有做什么你的想法.如果添加了method bar() { $!bar },你会发现,私人属性$!bar并没有得到设置:
class Foo {
    has $!bar;
    method bar() { $!bar }
}
say Foo.new( :3bar ).bar;   # (Any)
say Foo.new( :3bar ).perl;  # Foo.new
默认忽略命名参数:3bar(aka bar => 3),因为没有名称的公共属性bar.
如果你想让它抱怨这种情况,那么https://modules.perl6.org/dist/StrictNamedArguments可能适合你.
| 归档时间: | 
 | 
| 查看次数: | 102 次 | 
| 最近记录: |