У меня есть список двухэлементных списков, например, из того, что вы получите, например (1..5) Z (20..24)
, из которого я хочу сделать хеш (в этом примере то, что вы получите {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 =>24}
. Я мог бы сделать это «вручную», но это не не слишком элегантно, и я уверен, что у Раку есть идиоматический способ сделать это.
my @a = (1..5) Z (20..24);
my %a;
for @a -> @x {
%a{@x[0]} = @x[1];
flat
должен работать.flat
сгладит несколько уровней многоуровневой структуры данных, если уровниList
s. Но если вы уже ввели non-List
s, например, присваиваете данныеArray
без использованияflat
до того, как это сделать, тоflat
больше не будет подходящим инструментом. Например, если вы назначили его с помощью,my @a = 1..5 Z 20..25;
тоflat
один не будет делать эту работу. Я бы сгладил это такmy %h = @a[*;*];
. Я написал немного больше об использовании подписок для выравнивания многоуровневых данных здесь .((1, (1, 2, 3)), (2, (5, 6)), (17, (3, 4, 5, 92, 31))
(то есть конечным результатом будет хеш со списками в качестве значений)?