Закрытые атрибуты скрыты по умолчанию .perl и .gist - PullRequest
0 голосов
/ 26 февраля 2019

Вроде бы так:

class Foo { has $!bar }; say Foo.new( :3bar ).perl # OUTPUT: «Foo.new␤» 

Документация гласит это зависит от реализации , но мне интересно, имеет ли это смысл.

1 Ответ

0 голосов
/ 26 февраля 2019

Вывод .perl правильный.Foo.new( :3bar ) делает не делает то, что вы думаете.Если вы добавите method bar() { $!bar }, вы заметите, что приватный атрибут $!bar did not будет установлен:

class Foo {
    has $!bar;
    method bar() { $!bar }
}
say Foo.new( :3bar ).bar;   # (Any)
say Foo.new( :3bar ).perl;  # Foo.new

Именованный параметр :3bar (он же bar => 3)) игнорируется, потому что нет атрибута public с именем bar.

Если вы хотите, чтобы он жаловался на эту ситуацию, то, возможно, https://modules.perl6.org/dist/StrictNamedArguments что-тодля вас.

...