1

コードを勉強していますが、for ループが実際に何をしているのかわかりません。

for (final Move move : this.getPossibleMoves(color)) { 
      // do something..
}

クラス移動:

public class Move {
private final int source;
private final int target;

public Move() {
    source = 0;
    target = 0;
}

getPossibleMoves メソッド:

public Move[] getPossibleMoves(final PieceColor color) {
    // do something
    return simpleMoves.toArray(new Move[0]);
}
4

3 に答える 3

2

説明については、 For-Each ループの公式ドキュメントを参照してください。

次のように考えることができます。

for (Iterator<Move> itr = this.getPossibleMoves(color).iterator(); itr.hasNext();)
{
   final Move mv = itr.next();
   ...
} 
于 2013-07-27T09:24:24.620 に答える
1

このforステートメントの形式は次のとおりです。

form(Type element: iterable) { ... }

ここelementで、 type のオブジェクトに含まれる配列、リスト、セット、または任意のオブジェクトのコレクションの要素ですIterable

あなたの場合getPossibleMoves()、タイプのオブジェクトの配列を返していますMove。これはより明確な方法のコードなので、それが何をするかをよりよく理解できます。

Move[] moves = this.getPossibleMoves(color);


for (final Move move : moves) { 

    // do something....

}
于 2013-07-27T09:25:05.167 に答える
0

これは、拡張された for ループで、バージョン 5.0のJava SE プラットフォームで導入されました。これは、配列 or の要素を反復処理する簡単な方法です。これらは、配列の各要素を最初から最後までステップスルーしたい場合に使用でき、現在の要素のインデックスを知る必要はありません。Collection

this.getPossibleMoves(color)配列を返すと仮定します。Move[]このコード:

for (final Move move : this.getPossibleMoves(color)) { 
   // do something....
}

は暗黙的に と同等です:

for (int index=0;index<this.getPossibleMoves(color).length;index++) { 
    final Move move = this.getPossibleMoves(color)[index];
   // do something....
}

推奨読書:

  1. For-Each ループ
  2. 強化された For ループの使用
  3. 各ループ反復制御の強化
于 2013-07-27T09:22:50.777 に答える