Ich habe eine Liste von Listen mit zwei Elementen, wie (1..5) Z (20..24)
zum Beispiel, was Sie erhalten möchten, die ich in einen Hash umwandeln möchte (in diesem Beispiel, was Sie erhalten {1 => 20, 2 => 21, 3 => 22, 4 => 23, 5 =>24}
. Ich könnte es "von Hand" tun, aber das ist es nicht Es ist nicht zu elegant, und ich bin sicher, Raku hat eine idiomatische Art, es zu tun. Die unelegante Alternative, die ich mir ausgedacht habe, ist:
my @a = (1..5) Z (20..24);
my %a;
for @a -> @x {
%a{@x[0]} = @x[1];
flat
funktionieren.flat
reduziert mehrere Ebenen einer mehrstufigen Datenstruktur, wenn die EbenenList
s sind. Wenn Sie jedoch bereits Nicht-List
S eingeführt haben, z. B. die Daten einem zuzuweisen ,Array
ohne sieflat
zuvor zu verwenden , ist diesflat
nicht mehr das richtige Werkzeug. Zum Beispiel, wenn Sie es zugewiesen haben mitmy @a = 1..5 Z 20..25;
dannflat
allein wird nicht die Arbeit machen. Ich würde es so abflachenmy %h = @a[*;*];
. Ich habe hier etwas mehr über die Verwendung von Indizes geschrieben, um mehrstufige Daten zu reduzieren .((1, (1, 2, 3)), (2, (5, 6)), (17, (3, 4, 5, 92, 31))
(dh das Endergebnis wäre ein Hash mit Listen als Werten)?