Java、C、およびC ++(おそらく他の言語も)がforループ変数で複数の型を許可しないのはなぜですか?例えば:
for (int i = 0; i < 15; i++)
この場合、ループ変数iがあります。これはループカウンターです。
しかし、スコープが各反復ではなくループに制限されている別の変数が必要な場合があります。例えば:
for (int i = 0, variable = obj.operation(); i < 15; i++) { ... }
ループ内でのみ使用したいので、obj.operation()
リターンデータを格納しています。メモリに保持したくないし、ループ実行後も表示されたままにしたくない。メモリスペースを解放するだけでなく、の誤った使用によって引き起こされる望ましくない動作を回避するためにも。variable
variable
variable
したがって、ループ変数は便利ですが、型の制限があるため、広くサポートされていません。operation()
そのメソッドが長い値を返すと想像してください。これが発生した場合、データをキャストして失うことなく、ループ変数の利点を享受することはできません。次のコードはJavaでコンパイルされません。
for (int i = 0, long variable = obj.operation(); i < 15; i++) { ... }
繰り返しますが、なぜこのタイプの制限が存在するのか誰かが知っていますか?