Basic Round Robin in Perl Unterschied zwischen (++ / +1)

8

Kürzlich habe ich versucht, mit Perl ein einfaches Round Robin zu machen, und ich habe ein Verhalten gefunden, das ich nicht klar verstehe.

Hier das Verhalten:

%Vor%

Die Ausgabe dieses Codes lautet:

%Vor%

Aber wenn ich den "gleichen" Code tue, der $ a- & gt; {index} ++ durch $ a- & gt; {index} +1 ersetzt, ist das Round-Robin in Ordnung, Beispiel

%Vor%

Die Ausgabe ist:

%Vor%

Jemand kann mir den Unterschied zwischen ++ / +1 in diesem Fall erklären? Ich finde das wirklich "hässlich", denn wenn ich das Ergebnis keiner Variablen im Fall "++" zuweise, wird der Code wie erwartet funktionieren, wenn ich die Summe nicht nach innen setze ().

Dieser Code wird ein Round-Robin richtig machen:

%Vor%

Mit () in der Summe gibt der Code aus: 1,2,3,4,5,6,7,8,9

%Vor%     
jordivador 20.08.2015, 14:05
quelle

1 Antwort

10

$a->{index}+1 gibt $a->{index}+1 zurück, while
$a->{index}++ gibt $a->{index} zurück, bevor es geändert wurde.
++$a->{index} gibt $a->{index}+1 zurück, aber es macht keinen Sinn, sie in diesem Ausdruck zu verwenden, da sie $a->{index} unnötig ändert.

  

$a->{index} = ($a->{index}+1) % 2;

  1. Sagen Sie $a->{index} ist anfangs 0 .
  2. $a->{index}+1 gibt 1 zurück.
  3. Dann weisen Sie 1 % 2 zu, was 1 zu $a->{index} ist.
  

$a->{index} = $a->{index}++ % 2;

  1. Sagen Sie $a->{index} ist anfangs 0 .
  2. $a->{index}++ setzt $a->{index} auf 1 und gibt 0 (den alten Wert) zurück.
  3. Dann weisen Sie 0 % 2 zu, was 0 zu $a->{index} ist.

Optionen:

%Vor%

oder

%Vor%

oder

%Vor%

oder

%Vor%

oder

%Vor%

Beachten Sie, dass die letzten beiden Optionen in $a->{index} und nicht in 0 oder 1 einen ständig steigenden Wert haben.

Beachten Sie, dass sich die beiden letzten Optionen davon unterscheiden, ob die Bedingung beim ersten Durchlauf wahr oder falsch ist.

    
ikegami 20.08.2015, 14:08
quelle

Tags und Links