Eigenclass (або singleton-клас) належить до класу Class
. У Ruby, кожен клас є об’єктом типу Class
. Коли ви створюєте eigenclass для об’єкта (наприклад, об’єкта класу), ви фактично створюєте спеціальний об’єкт типу Class
, який є eigenclass для того об’єкта.
Давайте розглянемо приклад:
class MyClass
end
obj = MyClass.new
# Визначаємо eigenclass (singleton-клас) для об'єкта MyClass
eigenclass = class << MyClass
self
end
puts eigenclass # Виведе: #<Class:MyClass>
# Перевіримо, чи eigenclass є екземпляром класу Class
puts eigenclass.is_a?(Class) # Виведе: true
В цьому прикладі eigenclass для класу MyClass
є об’єктом класу Class
, і його тип підтверджується за допомогою методу is_a?
.