Курс языка программирования Raku / Приложение 🆕 / Типы и текстовые машины / Объекты и классы / Exercises
Фигуры с общей ролью
Задача
Определите роль Shape, требующую метод
area, а затем создайте классы Circle и
Square, которые эту роль исполняют.
Напишите подпрограмму describe, параметр которой
типизирован как Shape, чтобы она принимала любую
фигуру и отвергала всё, что фигурой не является. Она должна печатать
площадь фигуры, снабдив её именем класса. Вызовите её для круга радиусом
2 и квадрата со стороной 3.
Подпрограмма нигде не проверяет, какую именно фигуру она получила:
раз её параметр — Shape, у объекта гарантированно есть
метод area, поэтому один и тот же вызов .area
работает с любой пришедшей фигурой. Это и даёт роль — единый тип,
который можно потребовать, и один участок кода, одинаково обращающийся с
каждым классом, эту роль исполняющим.
Пример
Программа печатает:
Circle: 12.56636
Square: 9Решение
Навигация по курсу
← Решение: Банковский счёт | Решение: Фигуры с общей ролью →