Курс языка программирования 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Такое объединение ролей называется композицией. Оно позволяет собирать класс из нескольких независимых кусочков поведения, что часто гибче, чем выстраивать единую цепочку наследования: класс может подмешать ровно те возможности, которые ему нужны, и ничего лишнего.
Навигация по курсу
← Роли | Добавление роли объекту →
💪 Или перейдите сразу к
упражнениям этого раздела.