A quick explanation of what that means:
In ruby, you can define methods on a particular object:
a = "hello"
def a.informal
"hi"
end
a.informal
=> "hi"
What happens when you do that is that the object a, which is of class String
, gets its class changed to a "ghost" class, aka metaclass, singleton class or eigenclass. That new class superclass is String
.
Also, inside class definitions, self
is set to the class being defined, so
class Greeting
def self.say_hello
"Hello"
end
#is the same as:
def Greeting.informal
"hi"
end
end
What happens there is that the object Greeting
, which is of class Class
, gets a new metaclass with the new methods, so when you call
Greeting.informal
=> "hi"
There's no such thing as class methods in ruby, but the semantics are similar.