Raku kurss / Pielikums 🆕 / Tipi un teksta mašīnas / Objekti un klases / Exercises / Dzīvnieki, kas runā

Risinājums: Dzīvnieki, kas runā

Šeit ir iespējams risinājums uzdevumam.

Kods

class Animal {
    has $.name;
    method speak { '...' }
    method greet { "{$.name} says {self.speak}" }
}

class Dog is Animal { method speak { 'Woof' } }
class Cat is Animal { method speak { 'Meow' } }

for Dog.new(name => 'Rex'), Cat.new(name => 'Tom') -> $pet {
    say $pet.greet;
}

🦋 Atrodiet programmu failā animal-inheritance.raku.

Izvade

Rex says Woof
Tom says Meow

Komentāri

  1. greet ir definēta vienreiz bāzes klasē, bet tā izsauc self.speak. Tā kā self ir īstais objekts, izsaukums nonāk pie apakšklases pašas speak.

  2. Tas ir polimorfisms: viena un tā pati greet sunim rada Woof un kaķim Meow bez jebkāda nosacījumu koda.

Kursa navigācija

Dzīvnieki, kas runā   |   Regulārās izteiksmes un gramatikas