Curso de Raku / Apéndice 🆕 / Tipos y máquinas de texto / Objetos y clases / Exercises / Sumar vectores
Solución: Sumar vectores
Aquí tienes una posible solución para la tarea.
Código
class Vector {
has $.x;
has $.y;
method add(Vector $v) {
Vector.new(x => $.x + $v.x, y => $.y + $v.y);
}
method Str { "($.x, $.y)" }
}
my $sum = Vector.new(x => 1, y => 2).add(Vector.new(x => 3, y => 4));
put $sum;🦋 Puedes encontrar el código fuente en el archivo vector-add.raku.
Salida
(4, 6)Comentarios
addno cambia ninguno de los dos vectores; construye y devuelve unVectorcompletamente nuevo a partir de las componentes sumadas.Fíjate en que
Vectorse usa dentro de su propia definición: como tipo del parámetroVector $vy enVector.new. Eso está perfectamente bien: el nombre del tipo se conoce desde el momento en que empieza su declaración, así que una clase puede referirse libremente a sí misma en sus propios métodos. No hace falta ninguna clase de declaración anticipada.putconvierte su argumento en cadena con el métodoStr, así que lo que aparece es el formato personalizado"($.x, $.y)".