> > Err. There are only two things: compile-time variable properties and
   > > run-time value properties. Attributes are a Perl 5 construct that we're
   > > renaming because the name conflicts with the OO term for object data.
   > 
   > So,
   > 
   > $a is true
   > 
   > and 
   > 
   > $a.true = 1
   > 
   > are synonyms, right?

Depends whether Larry makes property accessors lvalued.

$a.true is actually quite a bit more sophisticated. It means:

        If the object $a refers to has a C<true> method, call that;
        Otherwise if the variable $a has a C<true> property, retrieve that;
        Otherwise if the value in $a has a C<true> property, retrieve that.


   > if not, then there are three things: compile-time variable properties,
   > run-time variable properties, and run-time value properties, no?

There are no run-time settable variable properties. Only run-time retrieval
of compile-time settable ones.


   > if so, then wouldn't it be safer to put properties inside a special object
   > associated with each object (the 'traits' object) so there would be little
   > namespace collision?

We actually want the possibility of that kind of namespace collision:
for polymorphism.

Damian

Reply via email to