ich einige Berechnungen zu tun, wie die Testfälle für eine Frage verwende ich auf PCCG Stapel von Exchange schreiben werde, und ich bemerkte, in einem Stück Code wie folgt, dass:Warum wird das zweite Instrument vor dem ersten evaluiert?
for i = 0, 20 do
io.write(i..": ")
diff(i)
end
(wo diff
a Funktion, die eine ziemlich schwere Berechnung durchführt und das Ergebnis ausgibt), das Ergebnis von diff
wird zuerst berechnet und dann werden i:
und das Ergebnis diff
gedruckt.
Aber warum passiert das? Sollte ich nicht i:
vor und während der Berechnung sehen, und das Ergebnis der Berechnung erst nach? Warum wartet es auf die Ausführung von diff
vor?
Das habe ich zuerst mit Luajit bemerkt, aber es passiert auch auf Vanille Lua und sogar außerhalb einer for
Schleife.
Dies passiert in der Regel, weil die Ausgabe gepuffert ist, in Java würden Sie einen Unterschied sehen, wenn Sie in den Fehler-Stream schreiben würden, aber ich weiß nicht, wie es in lua ist. – maraca