Forum: Ruby Class Method & Singletons - newbie question.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Salai K. (Guest)
on 2009-06-03 19:07
(Received via mailing list)
Dear Freinds,

Class Method and Singletons are the same?

Can you explain me with some simple code.

Many thanks in advance,


regards,
salai.
matt neuburg (Guest)
on 2009-06-03 21:56
(Received via mailing list)
salai <removed_email_address@domain.invalid> wrote:

> Class Method and Singletons are the same?

No, not quite.

> Can you explain me with some simple code.

It's very simple. There are really no class methods; there are only
instance methods. It is convenient to talk about class methods, but in
Ruby things are very elegant: a class is itself an instance (of the
Class class), and so a "class method" is merely an instance method of
that instance (i.e. an instance method of an instance of the Class
class).

Okay, so when you define a class method by saying

class C
end
def C.my_method
end

...you are doing EXACTLY the same thing that you are doing when you
define an instance method on any individual instance:

thing = Object.new
def thing.my_method
end

Exactly WHAT same thing? You are opening the instance and defining an
instance method applicable to that instance only. That is the
"singleton". So when you define a class method you are actually creating
a singleton instance method on that Class instance.

m.

PS By the way, in a completely different context (a proposed book about
rb-appscript) I have written an "introduction to Ruby" chapter that
might help you with these concepts. It's here:

http://www.apeth.com/ruby/02justenoughruby.html

Hope this helps.
Salai K. (Guest)
on 2009-06-05 03:03
(Received via mailing list)
Hi matt,

thanks you very much for your explanation and your "Ruby introduction"
book link.
http://www.apeth.com/ruby/02justenoughruby.html


regards,
salai
This topic is locked and can not be replied to.