Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Klasoj kaj objektoj

Atributoj

Malplena klaso ne estas tre utila. Por ke objekto portu siajn proprajn datumojn, vi donas al la klaso atributojn. Atributo estas deklarita ene de la klaso per la ŝlosilvorto has:

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

Ĉiu objekto de la klaso ricevas sian propran kopion de ĉi tiuj atributoj. Vi starigas iliajn valorojn, kiam vi kreas la objekton, transdonante ilin al new kiel nomitajn argumentojn:

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

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

La $. en has $.name faras du aferojn samtempe: ĝi deklaras atributon, kaj ĝi kreas metodon de la sama nomo — atingilon — kiu redonas la valoron de la atributo:

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

Malsamaj objektoj tenas siajn proprajn valorojn, sendepende unu de la alia:

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

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

La sekvaj temoj montras, kiel fari atributojn ŝanĝeblaj kaj kiel doni al ili defaŭltajn valorojn. (Estas ankaŭ maniero deklari privatajn atributojn, kaŝitajn de ekstere; ni revenos al ĝi, kiam metodoj estos enkondukitaj.)

Temoj en ĉi tiu sekcio

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu sekcio.

Ekzercoj

En ĉi tiu sekcio estas 4 ekzercoj. Trarigardu ĉiujn temojn de ĉi tiu sekcio antaŭ ol komenci la ekzercojn.

  1. Klaso por punkto
  2. Nombrilo
  3. Libro
  4. Ŝanĝebla etikedo

Kursa navigado

Solvo: Nomu la tipon   |   Leg- kaj skribeblaj atributoj