moveNext 方法

bool moveNext()
override

将迭代器向前推进到迭代中的下一个元素。

应在读取 current 之前调用。如果 moveNext 的调用返回 true,则 current 将包含迭代的下一个元素,直到再次调用 moveNext。如果调用返回 false,则没有更多元素,不应再使用 current

moveNext 已经返回 false 之后调用它是安全的,但它必须继续返回 false 并不产生任何其他效果。

调用 moveNext 可能由于各种原因而抛出异常,包括对底层集合的并发更改。如果发生这种情况,迭代器可能处于不一致状态,迭代器的任何进一步行为都是未指定的,包括读取 current 的效果。

final colors = ['blue', 'yellow', 'red'];
final colorsIterator = colors.iterator;
print(colorsIterator.moveNext()); // true
print(colorsIterator.moveNext()); // true
print(colorsIterator.moveNext()); // true
print(colorsIterator.moveNext()); // false

实现

bool moveNext() {
  int nextPosition = _position + 1;
  if (nextPosition < _length) {
    _current = _array[nextPosition];
    _position = nextPosition;
    return true;
  }
  _current = null;
  _position = _length;
  return false;
}