Curso de Raku / Apéndice 🆕 / Tipos y máquinas de texto / Objetos y clases / Exercises / Animales que hablan
Solución: Animales que hablan
Aquí tienes una posible solución para la tarea.
Código
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;
}🦋 Puedes encontrar el código fuente en el archivo animal-inheritance.raku.
Salida
Rex says Woof
Tom says MeowComentarios
greetse define una sola vez en la clase base, pero llama aself.speak. Comoselfes el objeto real, la llamada alcanza elspeakpropio de la subclase.Esto es polimorfismo: el mismo
greetproduceWoofpara un perro yMeowpara un gato sin ningún código condicional.
Navegación del curso
← Animales que hablan | Expresiones regulares y gramáticas →