On Thu, Apr 11, 2002 at 08:04:56AM +1000, Damian Conway wrote: > Allison wrote: > > > > $self.foo() => $self->foo() # and can be .foo() when $self is $_ > > .foo() => $_->foo() # but might be altered by a pragma > > foo() => foo() > > > And welcome back to where we started! ;-) Exactly! :)
> The problem that this discussion has highlighted is that using a bare > .foo in a method means the reader/maintainer has to track what the > current topic is in order to know who the current invocant is. That > would seem to be a (potentially expensive) hidden cost of this idiom. But possibly less expensive than providing a means to default to something other than topic. > That is, that as well as aliasing the invocant to $_, they also alias it > to some standard variable name. > > Then one would be guaranteed an invariant name (across all OO Perl!) > for the invocant, even under internal topicalizations. I'm in favor of the standardized variable name. It is a restriction, but not an onerous one. I've never used anything but $self, and I'm sure it would be easy to adapt to whatever else was chosen. Are there any statistics availble on current usage of $self vs. $this vs. whatever? It might be easiest to go with what the majority find most comfortable. Allison