At 1:54 AM +0200 6/19/05, Juerd wrote:
Except for attributes, which play a different game: the colon comes
*instead* of the dot as the twigil, while the accessor method gets : in
front of its name. If I recall correctly, the syntax is very misleading
in that it is NOT part of the name.

I would argue that the same rule applies to attributes and methods alike; privates of both have ':' as part of their name, and *every* attribute or method reference, public or private, has a '.'. No "instead" here.

So if you just factor out the ':' as being part of a private thing's name, then all other discussions for syntax can treat public and private the same way.

This goes for both explicit invocant forms like $obj.attr or $obj.meth and implicit forms like $.attr or $.meth, where in all cases 'attr' or 'meth' may or may not contain a leading ':', but it doesn't matter for the main discussion, except that ':' can't be used in the trailing edge of the operator.

Its much more consistent that way.

    $.bar      $.:bar      # I wouldn't mind if $:bar were an *abbreviation*

I agree and would accept $:bar *if* it were officially an abbreviation, as you suggest, just like one can omit the '.' on things like $foo.[0].{'bar'}; however, the full/longer form should always be valid syntax.

-- Darren Duncan

Reply via email to