Що таке eigenclass?

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

2 Вподобання