Швидке пояснення того, що це означає:
У ruby ви можете визначити методи для певного об'єкта:
a = "hello"
def a.informal
"hi"
end
a.informal
=> "hi"
Коли ви це робите, це те, що об’єкт a, який є класом String
, змінює свій клас на клас «привид», він же метаклас, клас singleton або власний клас. Це новий клас суперкласуString
.
Крім того, всередині визначень класу self
встановлюється клас, який визначається, так
class Greeting
def self.say_hello
"Hello"
end
def Greeting.informal
"hi"
end
end
Що відбувається там, так це те, що об'єкт Greeting
, який є класом Class
, отримує новий метаклас із новими методами, тому, коли ви телефонуєте
Greeting.informal
=> "hi"
У ruby немає такого поняття, як методи класу, але семантика схожа.