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是包含在类型对象中的数组、列表、集合或任何对象集合的元素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 平台引入,它是一种更简单的迭代数组元素的方法或. 当您希望按从前到后的顺序遍历数组的每个元素时,可以使用它们,并且您不需要知道当前元素的索引。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 回答