6 votes

Les attributs privés sont-ils cachés par défaut par .perl et .gist ?

Cela semble être le cas :

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

La documentation dit cela dépend de la mise en œuvre mais je me demande si cela a vraiment un sens.

10voto

Elizabeth Mattijsen Points 9294

El .perl est correcte. Foo.new( :3bar ) fait no fais ce que tu penses. Si vous ajoutez un method bar() { $!bar } vous remarquerez que l'attribut privé $!bar a fait no se mettre en place :

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

Le paramètre nommé :3bar (alias bar => 3 ) est silencieusement ignoré, parce qu'il y a pas de public avec le nom bar .

Si vous voulez qu'il se plaigne de cette situation, alors peut-être que https://modules.raku.org/dist/StrictNamedArguments est quelque chose pour vous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X