0Pricing
Ruby Academy · Урок

Открытые классы и исправление обезьянки

Изучите, как Ruby позволяет изменять существующие классы и добавлять новую функциональность

«Открытые классы и исправление обезьянки» — бесплатный урок Ruby Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.

Изменение классов во время выполнения

Открытые классы и изменение классов на лету

Руби позволяет изменять существующие классы во время выполнения.

Эта возможность, называемая «открытыми классами», позволяет разработчикам динамически расширять или изменять поведение.

Открытые классы и исправление обезьянки — иллюстрация 1

Что такое открытые классы?

Что такое открытые классы?

В Руби можно повторно открыть и изменить существующие классы.

Это позволяет добавлять новые методы во встроенные классы или классы, определённые пользователем.

Добавление методов в существующий класс

Добавление методов в существующий класс

Просто повторно определите класс и добавьте новые методы.

class String
  def shout
    self.upcase + '!!!'
  end
end

puts 'hello'.shout

Переопределение методов (изменение классов на лету)

Переопределение методов (изменение классов на лету)

В классах Руби можно переопределять существующие методы.

class String
  def reverse
    'Reversed method overridden!'
  end
end

puts 'hello'.reverse

Сохранение исходного метода с помощью вызова родительского метода

Сохранение исходного метода с помощью вызова родительского метода

Используйте super, чтобы сохранить поведение исходного метода.

class String
  def reverse
    super + ' (custom behavior added)'
  end
end

puts 'hello'.reverse

Варианты использования открытых классов

Варианты использования открытых классов

Открытые классы полезны в различных ситуациях:

  • расширение встроенных классов дополнительными методами;
  • улучшение сторонних библиотек;
  • повышение удобства чтения и сопровождаемости кода.

Риски изменения классов на лету

Риски изменения классов на лету

Изменение классов на лету может быть опасным при неосторожном использовании.

  • непредвиденное поведение при изменении базовых классов;
  • возможные конфликты со сторонними библиотеками;
  • усложнение отладки и сопровождения.

Альтернативы изменению классов на лету

Альтернативы изменению классов на лету

Вместо изменения глобального поведения рассмотрите использование уточнений.

Уточнения позволяют изменять классы в ограниченной области действия.

module StringExtensions
  refine String do
    def shout
      upcase + '!!!'
    end
  end
end

using StringExtensions
puts 'hello'.shout

Повторение открытых классов

Поздравляем!

Вы научились изменять существующие классы с помощью открытых классов и изменения классов на лету.

Далее вы изучите использование send и eval для динамического вызова методов.

Открытые классы и исправление обезьянки — иллюстрация 10

Часто задаваемые вопросы

Урок «Открытые классы и исправление обезьянки» бесплатный?

Да — полный текст урока «Открытые классы и исправление обезьянки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.

Чему я научусь в уроке «Открытые классы и исправление обезьянки»?

Изучите, как Ruby позволяет изменять существующие классы и добавлять новую функциональность Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ruby Academy?

Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Открытые классы и исправление обезьянки»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ruby Academy?

Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что такое метапрограммирование?
  2. Динамическое определение методов
  3. Открытые классы и исправление обезьянки
  4. Использование send и eval
← Назад к Ruby Academy