Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Klasoj kaj objektoj
Subprogramoj kaj metodoj
Vi nun havas du manierojn paki pecon de konduto: subrutinon kaj metodon. Ili aspektas similaj sed estas uzataj malsame.
Subrutino staras memstare. Vi vokas ĝin per ĝia nomo kaj transdonas al ĝi ĉion, kion ĝi bezonas, kiel argumentojn:
sub area-of($radius) {
π * $radius * $radius;
}
say area-of(2); # 12.566370614359172Metodo apartenas al klaso kaj estas vokata sur objekto per la punkto.
Ĝi povas uzi la proprajn datumojn de la objekto tra self
kaj la atributaj atingiloj, do vi ne transdonas tiujn datumojn:
class Circle {
has $.radius;
method area {
π * $.radius * $.radius;
}
}
say Circle.new(radius => 2).area; # 12.566370614359172Ambaŭ kalkulas la saman nombron. La diferenco estas, de kie venas la datumoj: la subrutino ricevas la radiuson kiel argumenton, dum la metodo legas ĝin el la objekto, sur kiu ĝi estis vokata.
Kiel ĝenerala regulo, uzu subrutinon por memstara operacio, kiu simple transformas siajn argumentojn, kaj metodon, kiam la konduto nature apartenas al objekto kaj laboras kun la propra stato de tiu objekto. Por klas-specifaj, sed ĝeneralaj rutinoj, uzu klasmetodojn.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Ekzercoj
En ĉi tiu sekcio estas 2 ekzercoj. Trarigardu ĉiujn temojn de ĉi tiu sekcio antaŭ ol komenci la ekzercojn.