Corso di Raku / Appendice 🆕 / Tipi e macchine per il testo / Oggetti e classi / Exercises / Sommare vettori
Soluzione: Sommare vettori
Ecco una possibile soluzione del compito.
Codice
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;🦋 Trova il programma nel file vector-add.raku.
Output
(4, 6)Commenti
addnon cambia nessuno dei due vettori; costruisce e restituisce unVectorcompletamente nuovo a partire dalle componenti sommate.Nota che
Vectorviene usato dentro la propria definizione — come tipo del parametroVector $ve inVector.new. Va benissimo: il nome del tipo è noto dal momento in cui la sua dichiarazione comincia, quindi una classe può riferirsi liberamente a se stessa nei propri metodi. Non serve alcuna dichiarazione anticipata.puttrasforma il proprio argomento in stringa con il metodoStr, quindi compare la formattazione personalizzata"($.x, $.y)".