Thread Probleme mit splice. Warum geht dat net??? (11 answers)
Opened by Alvin at 2008-01-12 17:22

murphy
 2008-01-12 19:25
#104647 #104647
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Alvin+2008-01-12 16:22:14--
[...] die 9 ist weg, wie gewünscht, die 4,5,7 und die letzte 7 wurden um 1 erhöht, aber die 1 wurde nicht erhöht. Warum???
Hab schon dran gedacht nach den splice Befehlen i-- zu machen, aber bringt auch nix.
[...]

Du hast Dir die Frage fast schon selbst beantwortet: Mittels splice entfernst Du ein Element aus dem Array, lässt die Schleifenvariable aber trotzdem erst beim nächsten Index weiterlaufen, wodurch ein Element übersprungen wird.

Nach der Spliceoperation $i-- auszuführen bringt auch nichts, da $i sofort danach vom Schleifenkopf neu gesetzt wird.

Eine mögliche Lösung wäre, an dieser Stelle keine foreach-Schleife sondern eine klassische for-Schleife zu verwenden:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
...
Innen: for (my $i = $[; $i <= $#population; $i++) {
  ...
  if (...) {
    ... splices ...
    $i--
  }
}
...


Linuxer+2008-01-12 17:42:27--
[...]
Wenn Du keine Formatierung der Ausgabe machst, dann nimm print;
wenn Du was formatieren willst, dann printf.
Denn ansonsten ist das eher eine Kanone für den Spatz.
[...]

printf ist außerdem gefährlich, wenn als erstes Argument kein konstanter String übergeben wird. Also entweder
Code (perl): (dl )
printf 'Das ist ein String: %s', $irgendwas;

oder
Code (perl): (dl )
print "Das ist ein String: $irgendwas";

aber bitte nicht
Code (perl): (dl )
printf "Das ist ein String: $irgendwas";
When C++ is your hammer, every problem looks like your thumb.

View full thread Probleme mit splice. Warum geht dat net???