Thread Array in einer Schleife füllen (2 answers)
Opened by Kurtosis at 2014-12-16 16:48

clms
 2014-12-16 18:40
#178777 #178777
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
Wie so oft bei Perl gilt auch hier TIMTOWTDI ("There is more than one way to do it")

Den Ansatz mit Perldoc:perlfunc push hat die GwenDragon schon gezeigt.

Ein anderer Ansatz ist Autovivifikation - d.h. ein Array-Element wird angelegt, wenn Du darauf zugreifst. Das könnte z.B. so aussehen
Code (perl): (dl )
1
2
3
4
my @result;    # leeres Array
foreach my $i (1..$max) {
  $result[$i-1] = compute_result($i);  # ein Element des Arrays wird überschrieben bzw. das Array erweitert.
}

Bitte beachten: Wenn Du stattdessen $result[$i] = ... schreibst, ist die Größe des Arrays int(@result)anschließend $max+1 weil auch das Element $result[0] angelegt wird (als undef). Dafür enthält $result[N] dann auch den Wert compute_result(N).


Oft geht es auch mit Perldoc:perlfunc map oder Perldoc:perlfunc grep, z.B. so
Code (perl): (dl )
my @result = map {compute_result($_)} (1..$max);

View full thread Array in einer Schleife füllen