Raku kurss / Padziļināti / Konteineri / Indeksa apzīmētāji 🆕
Exists un delete
Apstākļvārds :exists pārvērš indeksu par jautājumu: vai
pie šīs atslēgas vai indeksa ir vērtība? Tas atgriež Būla vērtību, neko
nepaņemot:
my %h = apple => 1, pear => 2;
say %h<apple>:exists; # True
say %h<plum>:exists; # FalseŠis ir pareizais veids, kā pārbaudīt atslēgu, jo vienkārša
%h<plum> nolasīšana vai nu atgrieztu nedefinētu
vērtību, vai — atkarībā no datiem — noslēptu atšķirību starp «nav» un
«ir, bet nedefinēta».
Apstākļvārds :delete noņem ierakstu un atgriež vērtību,
ko tas saturēja:
my %h = apple => 1, pear => 2;
say %h<apple>:delete; # 1
say %h.keys; # (pear)
say %h; # {pear => 2}Ieraksta apple vairs nav, un dzēstā vērtība
1 tiek atdota atpakaļ, lai to varētu izmantot.
Abi apstākļvārdi darbojas arī ar masīviem — pēc indeksa:
my @a = 10, 20, 30;
say @a[1]:exists; # True
say @a[5]:exists; # False
say @a[1]:delete; # 20
say @a[1]:exists; # FalseJa jums interesē, kā masīvs izskatīsies pēc tam, kad noņemts elements no vidus, lūk, atbilde:
say @a; # [10 (Any) 30]Tātad viens vienots pieraksts ļauj konteinerus izprašņāt un pārveidot uz vietas, nevis ķerties pie atsevišķām metodēm.
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Kursa navigācija
← Indeksa apzīmētāji 🆕 | Viktorīna — Indeksa apzīmētāji →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.