[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Calling methods from within singleton class

Pat Maddox

11/25/2006 11:08:00 AM

I'd like some clarification on the following simple examples.

class Foo
self
end # Foo

class << Foo
self
end # #<Class:Foo>

No surprise there. In the first case I'm defining the class and
returning self, which of course is the class, and in the second it's
the singleton class.

class << Foo
def foo
"foo"
end
end

Now I can call Foo.foo as expected. It could have just as easily been
def Foo.foo
"foo"
end

However, I can't do
class << Foo
foo
end

to call it. It results in "NameError: undefined local variable or
method `foo' for #<Class:Foo>". What's the difference?

Pat

1 Answer

George

11/26/2006 12:37:00 PM

0

On 11/25/06, Pat Maddox <pergesu@gmail.com> wrote:
>
> class << Foo
> def foo
> "foo"
> end
> end

This defines a `foo' method on instances of Foo's singleton class, namely Foo.

> class << Foo
> foo
> end
>
> ... NameError ...

This calls `foo' on Foo's singleton class, not Foo.

Note that "#<Class:Foo>" is #inspect-ese for "Foo's singleton class",
not "Foo"... ;-)

G.