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

   

Reply via email to