Курс по Raku / Обекти, вход-изход и изключения / Класове и обекти / Протоколът на метаобектите 🆕 / Exercises / Намерете метод

Решение: Намерете метод

Ето едно възможно решение на задачата.

Код

class Animal {
    method speak { 'generic' }
}

class Dog is Animal {
}

say so Dog.^find_method('speak');

🦋 Намерете програмата във файла find-method.raku.

Изход

True

Коментари

  1. .^find_method връща метода, ако съществува, или недефинирана стойност, ако не. so превръща това в обикновена булева стойност.

  2. Dog не дефинира собствени методи, а резултатът все пак е True: find_method претърсва цялата верига на наследяване и намира speak горе в Animal. Това отразява как действително извикване на метод върху Dog би открило наследения метод.

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

Намерете метод   |   Редът на разрешаване на методите