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

Atribūti

Tukša klase nav sevišķi noderīga. Lai objekts varētu nest savus datus, klasei dodat atribūtus. Atribūtu deklarē klases iekšienē ar atslēgvārdu has:

class Dog {
    has $.name;
    has $.age;
}

Katrs klases objekts iegūst savu šo atribūtu kopiju. To vērtības uzstādāt, kad objektu radāt, padodot tās new kā nosauktus argumentus:

class Dog {
    has $.name;
    has $.age;
}

my $rex = Dog.new(name => 'Rex', age => 3);

$. deklarācijā has $.name dara divas lietas uzreiz: tas deklarē atribūtu un izveido tāda paša nosaukuma metodi — piekļuves metodi —, kas atgriež atribūta vērtību:

say $rex.name; # Rex
say $rex.age;  # 3

Dažādi objekti glabā savas vērtības neatkarīgi cits no cita:

my $rex  = Dog.new(name => 'Rex',  age => 3);
my $fido = Dog.new(name => 'Fido', age => 5);

say $rex.name;  # Rex
say $fido.name; # Fido

Nākamie temati parāda, kā atribūtus padarīt maināmus un kā tiem dot noklusētās vērtības. (Ir arī veids, kā deklarēt privātus atribūtus, kas paslēpti no ārpuses; pie tā atgriezīsimies, kad būs ieviestas metodes.)

Šīs sadaļas temati

Prakse

Jūs gaida 1 viktorīna par šīs sadaļas saturu.

Vingrinājumi

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

  1. Punkta klase
  2. Skaitītājs
  3. Grāmata
  4. Maināma etiķete

Kursa navigācija

Risinājums: Nosauciet tipu   |   Lasāmi un rakstāmi atribūti