Cursus Raku / Addendum 🆕 / Types en tekstmachines / Objecten en klassen / Exercises / Vectoren optellen
Oplossing: Vectoren optellen
Hier is een mogelijke oplossing voor de taak.
Code
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;🦋 Je kunt de broncode vinden in het bestand vector-add.raku.
Uitvoer
(4, 6)Opmerkingen
addverandert geen van beide vectoren; ze bouwt een gloednieuweVectoruit de opgetelde componenten en geeft die terug.Merk op dat
Vectorbinnen zijn eigen definitie gebruikt wordt — als parametertypeVector $ven inVector.new. Dat is volkomen in orde: de typenaam is bekend vanaf het moment dat de declaratie begint, dus een klasse kan in haar eigen methoden vrijelijk naar zichzelf verwijzen. Er is geen enkele vorm van vooruitdeclaratie nodig.putmaakt van zijn argument een string met de methodeStr, dus is de eigen opmaak"($.x, $.y)"wat er verschijnt.