Hi --
On Wed, 15 Mar 2006, gwtmp01 / mac.com wrote:
>
> On Mar 13, 2006, at 12:38 PM, Trans wrote:
>> Rather then using a specific method for accessing the
>> singleton/eigennclass, could we just use an alternate to dot-notation.
>> I.e. Instead of 'x.eigenclass.foo' either 'x:foo' or 'x!foo', or
>> somthing like that.
>
> When I first encountered singleton class notation in Ruby:
>
> class <<obj; end
>
> I thought of '<<' in this situation as a prefix operator on the object.
I know it sounds minor but I think with the space it's much clearer
that this isn't the case:
class << obj
I've always thought of this as sort of pulling the class out of the
object, or something.
> I suppose you hack the parser to understand that but I'm guessing it
> would really tangle up the grammar. In any case, the parser doesn't treat
> the text after the 'class' keyword as an expression. You can't substitute
> '<<obj' for an expression that evaluates to an eigenclass. I always thought
> that was strange. Why doesn't the parser just look for an expression that
> evaluates to a class object? The superclass can be specified by an
> expression,
> why can't the 'regular' class be handled in the same way?
>
> In any case, I think that '<<obj' is seems out of place relative
> to the rest of Ruby's syntax.
>
> I'd prefer a method to access the singleton class object:
>
> obj.singleton_class
>
> is OK but I tend to like more terse names:
>
> obj.sclass
>
> If we had this, I would expect:
>
> class obj.sclass
> end
>
> to do the obvious thing and open up obj's singleton class.
I'm certainly a Kernel#s[ingleton_]class advocate, but I don't think
it's obvious that this change in the behavior of the class keyword
would follow, since:
class some_class_in_a_variable
doesn't work. I don't know the reasoning behind it.
David
--
David A. Black (dblack / wobblini.net)
Ruby Power and Light, LLC (http://www.rubypowerandlight.com)
"Ruby for Rails" chapters now available
from Manning Early Access Program! http://www.manning.com/books/black