Красивых женщин причисляют сегодня к талантам их мужей (Г. Лихтенберг).

Ruby – модули и микшины

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Язык программирования Ruby
Модули – это способ группировки методов, классов и констант. Модули дают вам два основных преимущества.

  • Модули предоставляют пространство имен и предотвращают конфликты имен.
  • Модули реализуют установку mixin.

Модули определяют пространство имен, песочницу, в которой могут использоваться ваши методы и константы, не беспокоясь о том, что на них наступать другие методы и константы.

Синтаксис

 

Константы модуля называются так же, как и константы класса, с начальной буквой в верхнем регистре. Определения методов также похожи: методы модуля определяются точно так же, как методы класса.

Как и методы класса, вы вызываете метод модуля, вызывая его имя с именем модуля и периодом, и ссылаетесь на константу, используя имя модуля и два двоеточия.

пример

 

Мы можем определить еще один модуль с тем же именем функции, но с другой функциональностью:

 

Как и методы класса, всякий раз, когда вы определяете метод в модуле, вы указываете имя модуля, за которым следует точка, а затем имя метода.

Ruby требует Statement

Оператор require похож на оператор include C и C ++ и оператор импорта Java. Если третья программа хочет использовать какой-либо определенный модуль, она может просто загрузить файлы модулей с помощью инструкции Ruby require:

Синтаксис

 

Здесь не требуется указывать расширение..rb вместе с именем файла.

Пример

 

Здесь мы используем $ LOAD_PATH << ‘.’ чтобы Ruby знал, что включенные файлы должны быть найдены в текущем каталоге. Если вы не хотите использовать $ LOAD_PATH, вы можете использовать require_relative для включения файлов из относительного каталога.

ВАЖНО
Здесь оба файла содержат одно и то же имя функции. Таким образом, это приведет к двусмысленности кода, включая включение в вызывающую программу, но модули избегают этой неоднозначности кода, и мы можем вызвать соответствующую функцию с использованием имени модуля.

Заявление include в Ruby

Вы можете внедрить модуль в класс. Чтобы внедрить модуль в класс, вы используете оператор include в классе:

Синтаксис

 

Если модуль определен в отдельном файле, тогда требуется включить этот файл, используя инструкцию require перед вложением модуля в класс.

Пример

Рассмотрим следующий модуль, написанный в файле support.rb.

 

Теперь вы можете включить этот модуль в класс следующим образом:

 

Это приведет к следующему результату:

Микшины в Ruby

Прежде чем перейти к этому разделу, мы предполагаем, что вы знакомы с объектно-ориентированными концепциями.

Когда класс может наследовать функции из более чем одного родительского класса, класс должен показывать множественное наследование.

Ruby не поддерживает множественное наследование напрямую, но Ruby Modules имеют еще одно замечательное применение. В инсульта они в значительной степени устраняют необходимость в множественном наследовании, предоставляя средство, называемое mixin.

Mixins дают вам прекрасно контролируемый способ добавления функциональности к классам. Однако их истинная власть возникает, когда код в mixin начинает взаимодействовать с кодом в классе, который его использует.

Давайте рассмотрим следующий примерный код, чтобы получить представление о микшинах:

 

Модуль А состоит из методов a1 и a2. Модуль B состоит из методов b1 и b2. Образец класса включает в себя оба модуля A и B. Образец класса может обращаться ко всем четырем методам, а именно a1, a2, b1 и b2. Поэтому вы можете видеть, что класс Sample наследуется от обоих модулей. Таким образом, вы можете сказать, что класс Sample показывает множественное наследование или mixin.

Читайте также

    Добавить комментарий

    Войти с помощью: 

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Простая логическая игра "Поймай кота". Задача игры окружить кота точками так, чтобы он не смог убежать с поля. Постигла неудача - начни игру снова!

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close