Kurso de Raku / Aldono 🆕 / Tipoj kaj tekstmaŝinoj / Objektoj kaj klasoj / Exercises / Adicii vektorojn
Solvo: Adicii vektorojn
Jen ebla solvo de la tasko.
Kodo
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;🦋 Vi povas trovi la fontkodon en la dosiero vector-add.raku.
Eligo
(4, 6)Komentoj
addne ŝanĝas iun el la du vektoroj; ĝi konstruas kaj redonas tute novanVectorel la sumigitaj komponantoj.Rimarku, ke
Vectorestas uzata ene de sia propra difino — kiel la parametra tipoVector $vkaj enVector.new. Tio estas tute en ordo: la tipnomo estas konata de la momento, kiam ĝia deklaro komenciĝas, do klaso povas libere referenci sin mem en siaj propraj metodoj. Ne necesas ia ajn antaŭdeklaro.putĉenigas sian argumenton per la metodoStr, do la propra formatado"($.x, $.y)"estas tio, kio aperas.