Kurso de Raku / Progresinta / Operatoroj / Trajtoj kaj pragmoj
Enkonstruitaj trajtoj
Trajto estas aplikata per la ŝlosilvorto is tuj
post deklaro. Ĝi ruliĝas dum kompilado kaj ŝanĝas iun fiksitan econ de
la aĵo, al kiu ĝi estas alfiksita. Raku liveras multajn; vi jam uzis
kelkajn.
Defaŭlte, la parametroj de subrutino estas
nur-legeblaj — vi ne povas atribui al ili ene de la
rutino. La trajto is copy donas al vi privatan, modifeblan
kopion de la argumento, kiun vi povas ŝanĝi sen influi la vokanton:
sub greet($name is copy) {
$name = "dear $name";
say "Hello, $name!";
}
my $who = 'Anna';
greet($who); # Hello, dear Anna!
say $who; # Anna — la propra variablo de la vokanto restas netuŝitaLa trajto is rw iras plu: ĝi ligas la parametron al la
variablo de la vokanto, do ŝanĝo farita ene de la rutino videblas
ekstere:
sub bump($n is rw) {
$n++;
}
my $x = 10;
bump($x);
say $x; # 11Sen unu el ĉi tiuj trajtoj, $n++ estus kompiltempa
eraro, ĉar la parametro estus nur-legebla.
Alia ofta trajto starigas defaŭltan valoron:
my $port is default(8080);
say $port; # 8080Ĉi tie is default donas al la variablo valoron, al kiu
ĝi retiriĝas. Ĉiu enkonstruita trajto — is rw,
is copy, is default kaj pliaj — alfiksas unu
specifan, kompiltempan konduton al deklaro. La sekva temo montras, ke
trajtoj ne estas fermita aro: vi povas difini viajn
proprajn.
Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Kursa navigado
← Trajtoj kaj pragmoj | Kvizo — Trajtoj →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.