Warum erlauben Java, C und C++ (vielleicht auch andere Sprachen) nicht mehr als einen Typ für For-Loop-Variablen? Zum Beispiel:Typeinschränkung in Schleifenvariablen in Java, C und C++
for (int i = 0; i < 15; i++)
In diesem Fall haben wir eine Schleifenvariable i, die der Schleifenzähler ist.
Aber ich möchte vielleicht eine andere Variable haben, deren Umfang auf die Schleife beschränkt ist, nicht auf jede Iteration. Zum Beispiel:
for (int i = 0, variable = obj.operation(); i < 15; i++) { ... }
Ich Speicherung obj.operation()
Rückgabedaten in variable
, weil ich es benutzen will nur innerhalb der Schleife. Ich möchte nicht variable
im Speicher gehalten werden, noch nach der Ausführung der Schleife sichtbar bleiben. Nicht nur, um Speicherplatz freizugeben, sondern auch um unerwünschtes Verhalten zu vermeiden, das durch die falsche Verwendung von variable
verursacht wird.
Daher sind Schleifenvariablen nützlich, werden aber aufgrund ihrer Typbeschränkung nicht umfassend unterstützt. Stellen Sie sich vor, dass Methode einen langen Wert zurückgibt. Wenn das passiert, kann ich die Vorteile von Schleifenvariablen nicht genießen, ohne Daten zu werfen und zu verlieren. Der folgende Code kompiliert nicht in Java:
Wieder jemand weiß, warum diese Art der Einschränkung existiert?
das ist was ich wollte. funktioniert auch auf C/C++. Danke! wenn ich könnte würde ich +1 geben;) – fjsj
Die Antwort funktioniert, aber mit anonymen Blöcken wie das ist ein ungewöhnlicher Stil, würde ich das nicht in meinen Programmen verwenden. – Jesper
Ich begegne dieser Einschränkung sehr häufig, zum Beispiel wenn ich einen Iterator oder eine andere sequentielle Struktur basierend auf dem Index transformieren muss. Init-Klausel der for-Schleife ist ein guter Ort, um Variablen, die nur im Kontext dieser Schleife benötigt werden, zu setzen. Zum Beispiel wäre dies eine gute Schleife, um ein zufälliges Array zu füllen: für (int i = 0, final Zufällig zufällig = neu Zufällig(); i
Fixpoint