Raku kurss / Padziļināti / Konteineri / Kārtotie konteineri
Saistīšana ar :=
Līdz šim katrs jūsu izveidotais mainīgais radīja jaunu konteineru, un
piešķiršana ar = ievietoja vērtību tajā
konteinerā. Saistīšana, ko raksta ar :=, ir citāda: tā
liek nosaukumam norādīt uz jau esošu konteineru, nevis veidot
jaunu.
Pēc saistīšanas abi nosaukumi dalās ar to pašu konteineru, tāpēc izmaiņa, kas veikta caur vienu no tiem, ir redzama caur otru:
my $x = 10;
my $y := $x;
$x = 20;
say $y; # 20Šeit $y := $x nekopē vērtību 10. Tas padara
$y par citu nosaukumu tam pašam konteineram, kas ir
$x. Kad $x vēlāk tiek iestatīts uz
20, nolasot $y arī atgriež
20.
Salīdziniet to ar parasto piešķiršanu, kas kopē vērtību atsevišķā konteinerā:
my $x = 10;
my $y = $x; # a plain copy
$x = 20;
say $y; # 10Saistīšana darbojas arī ar masīviem. Šis piemērs padara
@alias par citu nosaukumu masīvam @data:
my @data = 1, 2, 3;
my @alias := @data;
@alias[0] = 99;
say @data; # [99 2 3]Vēl viena detaļa: ja saistāt nosaukumu tieši ar literālu vērtību, aiz tā nav konteinera, tāpēc nosaukums kļūst tikai lasāms:
my $pi := 3.14;
$pi = 3;Cannot assign to an immutable value
in block <unit> at t.raku line 2Kursa navigācija
← Viktorīna — Masīvi un saraksti | Saplacināšana un vienuma veidošana →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.