Hi,
I thought I understood this, but apparently not.
What is this object exactly?
o = class << String; self; end
p o
and
p String
should output the same thing.
but it doesn't
p o #<Class:String>
p String #String
Thanks for answering such a basic question for me.
-Patrick
···
From my understanding:
--
Posted via http://www.ruby-forum.com/ .
Eric_I2
(Eric I.)
11 August 2008 04:07
2
o is not the same as String. o is String's metaclass. The exact role
that metaclasses play is Ruby's take on object-oriented programming is
too much for an answer post such as this. But you might want to read
why's explanation at:
http://www.whytheluckystiff.net/articles/seeingMetaclassesClearly.html
Eric
···
On Aug 10, 11:22 pm, Patrick Li <patrickli_2...@hotmail.com> wrote:
I thought I understood this, but apparently not.
What is this object exactly?
o = class << String; self; end
From my understanding:
p o
and
p String
should output the same thing.
but it doesn't
p o #<Class:String>
p String #String
====
Rails training and Ruby training available at http://LearnRuby.com .
On-site and customized training are available.
In your example, String is an instance of Class, and o is the
eigenclass (or metaclass) of String. Maybe this will help clarify:
o = class << String; self; end
o.class_eval do
def backwards
'gnirtS'
end
end
String.backwards # => "gnirtS"
HTH,
Chris
···
On Aug 10, 9:22 pm, Patrick Li <patrickli_2...@hotmail.com> wrote:
Hi,
I thought I understood this, but apparently not.
What is this object exactly?
o = class << String; self; end
From my understanding:
p o
and
p String
should output the same thing.
but it doesn't
p o #<Class:String>
p String #String
Thanks for answering such a basic question for me.
-Patrick
--
Posted viahttp://www.ruby-forum.com/.