情况似乎是这样的:
class Foo { has $!bar }; say Foo.new( :3bar ).perl # OUTPUT: «Foo.new?»
Run Code Online (Sandbox Code Playgroud)
文档说它依赖于实现,但我想知道这是否真的有意义.
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
Run Code Online (Sandbox Code Playgroud)
默认忽略命名参数:3bar(aka bar => 3),因为没有名称的公共属性bar.
如果你想让它抱怨这种情况,那么https://modules.perl6.org/dist/StrictNamedArguments可能适合你.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |