Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Протокол метаобъектов 🆕 / Exercises / Найдите метод
Решение: Найдите метод
Вот один из возможных вариантов решения задачи.
Код
class Animal {
method speak { 'generic' }
}
class Dog is Animal {
}
say so Dog.^find_method('speak');🦋 Исходный код можно найти в файле find-method.raku.
Вывод
TrueКомментарии
.^find_methodвозвращает метод, если он существует, или неопределённое значение, если нет.soпревращает это в обычное булево значение.Сам
Dogне определяет методов, и тем не менее результат —True:find_methodищет по всей цепочке наследования и находитspeakвыше, вAnimal. Это отражает то, как настоящий вызов метода уDogнашёл бы унаследованный метод.