Raku kurss / Padziļināti / Konteineri / Kārtotie konteineri
Saplacināšana un vienuma veidošana
Kad ievietojat vienu masīvu citā, Raku automātiski neapvieno to elementus. Aplūkojiet šādu programmu:
my @a = 1, 2, 3;
my @b = 4, 5;
my @c = @a, @b;
say @c.elems; # 2
say @c; # [[1 2 3] [4 5]]Masīvam @c ir tikai divi elementi: masīvi
@a un @b. Raku saglabā katru konteineru kā
vienu vienību, nevis izlej tā saturu ārējā masīvā. Tas pats notiek ar
vērtību, kas novietota starp citām:
my @a = 1, 2, 3;
my @d = 0, @a, 99;
say @d; # [0 [1 2 3] 99]Kad jums tiešām nepieciešama viena plakana secība, pieprasiet to
tieši ar rutīnu flat:
my @a = 1, 2, 3;
my @b = 4, 5;
say flat(@a, @b); # (1 2 3 4 5)
say flat(@a, @b).elems; # 5Itemizācija (Itemization)
Dažreiz jums ir nepieciešams pretējais: pasargāt konteineru no
izlīdzināšanas pat flat iekšienē. Konstrukcija
$(...) itemizē savu argumentu — tā atzīmē
rezultātu kā vienu vienību. Salīdziniet iepriekšējo piemēru ar šo:
my @a = 1, 2, 3;
my @b = 4, 5;
say flat($(@a), @b); # ([1 2 3] 4 5)Šeit $(@a) saglabā @a kā vienu elementu,
bet @b joprojām tiek izlīdzināts savās divās vērtībās. Tā
ir sigila $ ideja vēlreiz: $ nozīmē “uztvert
šo kā vienu lietu”.
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Kursa navigācija
← Saistīšana ar
:= | Viktorīna —
Masīvu ligzdošana →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.