Thread Slice in vorderen Dimensionen eines mehrdimensionalen Arrays? (quasi @x[0..5][1]) (10 answers)
Opened by Sven_123 at 2011-06-20 16:13

Sven_123
 2011-06-21 09:31
#149806 #149806
User since
2010-06-01
120 Artikel
BenutzerIn
[default_avatar]
Das map von renee geht, trotzdem irgendwie unschön, wenn du also Alternativvorschläge hast... ;)

Ich mach mal ein perl5-Beispiel, da kann ich z.B. schreiben:
Code (perl): (dl )
1
2
3
4
5
6
use strict;
use warnings;

my @x = ([2,8,3],[5,1,6],[9,7,4]);
my $min_vec3 = (sort {$a <=> $b} @{$x[2]}[0..2])[0];
print "Kleinster Wert im dritten Vektor: $min_vec3\n";


Wenn ich mir den Array als Matrix aufschreibe, in dem in jeder Spalte eine Arrayref steht:
Code: (dl )
1
2
3
2 5 9
8 1 7
3 6 4

kann ich also recht einfach slices innerhalb einer Spalte ausdrücken, aber nur recht umständlich innerhalb einer Zeile, also vom Prinzip ein:
Code (perl): (dl )
@{$x[0..2]}[0]
in diesem Beispiel (2,5,9).

Da perl6 ziemlich hübsche Spielereien für Arrays mitliefert, hätte ich gehofft, dass es, passend, eine einfache Syntax dafür mitliefert. Zwar vermute ich, dass Operationen auf Einträge verschiedener Arrays aus Speichergründen langsamer sind, aber manchmal ist es trotzdem praktisch und ich versteh nicht, warum man den Interpreter nicht einfach z.B. @x[0..2][0] genauso interpretieren lässt, wie @x[0][0..2]...

View full thread Slice in vorderen Dimensionen eines mehrdimensionalen Arrays? (quasi @x[0..5][1])