Giải thích nhanh về điều đó có nghĩa là:
Trong ruby, bạn có thể xác định các phương thức trên một đối tượng cụ thể:
a = "hello"
def a.informal
"hi"
end
a.informal
=> "hi"
Điều gì sẽ xảy ra khi bạn làm điều đó là đối tượng a, thuộc lớp String, bị thay đổi lớp của nó thành lớp "ma", hay còn gọi là siêu kính, lớp singleton hoặc lớp eigenclass. Lớp cha của lớp mới đó là String.
Ngoài ra, các định nghĩa bên trong lớp, selfđược đặt thành lớp đang được định nghĩa, vì vậy
class Greeting
def self.say_hello
"Hello"
end
def Greeting.informal
"hi"
end
end
Điều gì xảy ra ở đó là đối tượng Greeting, thuộc loại Class, nhận được một siêu kính mới với các phương thức mới, vì vậy khi bạn gọi
Greeting.informal
=> "hi"
Không có cái gọi là phương thức lớp trong ruby, nhưng ngữ nghĩa thì tương tự.