Curso de Raku / Objetos, entrada/salida y excepciones / Clases y objetos / Roles / Exercises / Una caja con tamaño
Solución: Una caja con tamaño
Aquí tienes una posible solución para la tarea.
Código
role Sized {
method describe {
'size is ' ~ self.size;
}
}
class Box does Sized {
has $.size;
}
my $b = Box.new(size => 10);
say $b.describe;
say $b ~~ Sized;🦋 Puedes encontrar el código fuente en el archivo greetable.raku.
Salida
size is 10
TrueComentarios
El rol aporta el método
describe, y la clase lo compone condoes Sized. El método se apoya enself.size, que aporta la claseBox: el rol y la clase encajan para formar el objeto completo.Como
Boxasume el rol, el smartmatch$b ~~ SizedesTrue: un objeto se reconoce como portador de todos los roles que compone su clase, lo que resulta útil para comprobar qué sabe hacer un objeto antes de llamar a un método del rol.