On 10/6/05, Dave Whipp <[EMAIL PROTECTED]> wrote:
> sub foo( $a, ?$b = rand but :is_default )
> {
> ...
> bar($a,$b);
> }
>
> sub bar( $a, ?$b = rand but :is_default )
> {
> warn "defaulting \$b = $b" if $b.is_default;
> ...
> }
>
>
> It would be unfortunate if the "is_default" property attached in &foo
> triggers the warning in &bar. So I'd like to say somthing like
>
> sub foo( $a, ?$b = 0 but lexically :is_default ) {...}
> or
> sub foo( $a, ?$b = 0 but locally :is_default ) {...}
>
> to specify that I don't want the property to the propagated.
This came up before when I proposed "lexical properties". That was
before we knew that a property was just a role. So you can do a
lexical property like so:
{
my role is_default {} # empty
sub foo($a, ?$b = 0 but is_default) {...}
}
{
my role is_default {}
sub bar($a, ?$b = rand but is_default) {...}
}
If this turns out to be a common want, I can see:
sub bar($a, ?$b = rand but my $is_default) {
warn "Defaulted to $b" if $b.does($is_default);
}
But I don't think it will be, and the empty role is easy enough.
Luke