Peter Behroozi wrote: >> sub hidden (str $name, int $force is aka($override)) {...} > > > Hang on a moment! In your original answer to this question, you used > the "is named('alias')" syntax, but now you are suggesting using the > sigil in the syntax.
Yes, but for a *different* property. The idea of the C<is named> property is that it *changes* the external key by which you specify the corresponding parameter when using named parameters. That is: sub foo ($bar is named('baz')) { print $bar; # Okay print $baz; # Error (not a real param) } foo(bar=>1); # Error (not known by this name externally) foo(baz=>1); # Okay Whereas the <is aka> property *adds* an alias for the corresponding parameter, when using named parameters. That is: sub foo ($bar is aka($baz)) { print $bar; # Okay print $baz; # Okay (Just another name for $bar) } foo(bar=>1); # Okay foo(baz=>1); # Okay (Just another key meaning bar=>1 ) > So, should it really be > > int $force is aka($override) Yes. > or > > int $force is aka('override') No, not the way I intended it. > I much prefer the latter because: a) it unquestionably marks 'override' > as a label for $force, It's not meant to be. That's what C<is named> would be for. > b) the subroutine author is likely to use either > $force or $override and not both, Possibly. But if it's truly an alias, they should be able to use both. > c) it gives meaning to things like "$force is aka(@override)" True. Though it would be more useful in reverse: sub foo (@bar is aka($baz)) { # now @bar is an array # and $baz is an array ref } > Then again, if you have good reasons for the other syntax, I would be > more than happy to hear those as well. Then I hope this made you happy. ;-) Damian