Raku kurss / Pielikums 🆕 / Tipi un teksta mašīnas / Objekti un klases / Exercises / Vektoru saskaitīšana
Risinājums: Vektoru saskaitīšana
Šeit ir iespējams risinājums uzdevumam.
Kods
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;🦋 Atrodiet programmu failā vector-add.raku.
Izvade
(4, 6)Komentāri
addnemaina nevienu no vektoriem; tā no saskaitītajām komponentēm konstruē un atgriež pavisam jaunuVector.Ievērojiet, ka
Vectortiek lietots savas definīcijas iekšienē — gan kā parametra tipsVector $v, ganVector.new. Tas ir pilnīgi pieņemami: tipa nosaukums ir zināms no brīža, kad sākas tā deklarācija, tāpēc klase savās metodēs var brīvi atsaukties pati uz sevi. Nekāda priekšdeklarācija nav vajadzīga.putsavu argumentu pārvērš virknē ar metodiStr, tāpēc parādās tieši pielāgotais"($.x, $.y)"noformējums.