Raku kurss / Objekti, ievade/izvade un izņēmumi / Klases un objekti

Klases metodes

Vairums metožu tiek izsauktas uz objekta — klases instances. Taču metodi var izsaukt arī uz pašas klases, tas ir, uz tipa objekta. Tādu metodi bieži sauc par klases metodi. Tā noder vērtībām un darbībām, kas pieder klasei kopumā, nevis kādam vienam konkrētam objektam.

Klases metodi definējat tieši tāpat kā jebkuru citu metodi:

class Road {
    method speed-limit { 120 }
}

un izsaucat uz klases nosaukuma, nevis uz instances:

say Road.speed-limit; # 120

Jūs jau esat lietojuši klases metodi, to nenosaucot: new ir metode, ko izsauc uz klases, lai radītu jaunu objektu.

Klases metodei nav piekļuves instances atribūtiem — aiz tās nav neviena konkrēta objekta —, tāpēc tā strādā tikai ar informāciju, kas ir vienāda katram klases objektam. Kad darbs ir atkarīgs no konkrēta objekta datiem, izmantojiet parastu metodi, kas izsaukta uz instances; kad nav — klases metode iederas dabiski.

Ievērojiet, ka, lai gan klases metodēm instance nav vajadzīga, tajās joprojām var izmantot objekta datus, ja objekts jums ir:

class Road {
    has $.name;
    method speed-limit { 120 }

    method info {
        "The maximum speed on $.name is " ~ self.speed-limit
    }
}

my $R404 = Road.new(name => 'Road 404');
say $R404.info;

Šī programma izdrukā gaidīto rezultātu:

The maximum speed on Road 404 is 120

Bez instantiēta klases objekta izsaukums, piemēram, say Road.info, radītu kļūdu.

Prakse

Jūs gaida 1 viktorīna par šī temata saturu.

Vingrinājumi

Šajā sadaļā ir 2 vingrinājumi. Pirms ķerieties pie vingrinājumiem, izlasiet visus šīs sadaļas tematus.

  1. Formula klasē
  2. No kilometriem uz jūdzēm

Kursa navigācija

Risinājums: Temperatūras pārrēķins   |   Formula klasē