Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Роли

Композиция нескольких ролей

Класс может выполнять больше одной роли. Достаточно перечислить каждую со своим does:

role Walk {
    method move { 'walking' }
}

role Swim {
    method dive { 'diving' }
}

class Duck does Walk does Swim {
}

Теперь у класса Duck есть и метод move из Walk, и метод dive из Swim:

say Duck.new.move; # walking
say Duck.new.dive; # diving

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

Навигация по курсу

Роли   |   Добавление роли объекту


💪 Или перейдите сразу к упражнениям этого раздела.