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ự.