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

  1. add ne ŝanĝas iun el la du vektoroj; ĝi konstruas kaj redonas tute novan Vector el la sumigitaj komponantoj.

  2. Rimarku, ke Vector estas uzata ene de sia propra difino — kiel la parametra tipo Vector $v kaj en Vector.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.

  3. put ĉenigas sian argumenton per la metodo Str, do la propra formatado "($.x, $.y)" estas tio, kio aperas.

Kursa navigado

Adicii vektorojn   |   Bestoj kiuj parolas