Question 1:
What is meant by:
has $attribute # lexical alias for $!attribute.
Here is more concrete example. There is none in S12.
class C {
has $a;
method foo ()
{
my $y = $a; # is the correct?
}
In that scope, is $a really a shortcut for $self!a ?
If so, is that really a good idea?
If not, please clarify.
Question 2:
Here is summary of what is said in S12 concerning these declarators, used
inside a class:
my $.var class attribute, plus generates accessor, not inheritable. (The
variable itself or the accessor is not inheritable?)
my $!var class attribute, no accessor, not inheritable. How is this
different from a normal lexical variable? Role composition can show
differences?
our $.var class attribute, accessor, inheritable.
our $!var class attribute, no accessor, inheritable.
my $var lexically scoped variable
our $attribute class attributes.
What do you mean by "inheritable"? Does the form our $!var make sense or is
that an oxymoron? How is my $var with no metaclass involvement different in
functionality from my $.var ? Likewise for 'our' with and without a twigil. 6
ways to define class attributes -- TIMTOYTDI for sure.
I can take the issue to think through the details and write it up. But, what
central point is it trying to embody? Here is a first cut:
* my and our *always* work in the usual way for the declared symbol. Don't
worry about funny twigil names or the fact that it's inside a class.
* the . twigil makes an accessor in the class itself for that value.
*? so, the ! twigil doesn't seem to accomplish anything in this situation