interleave method

  1. @useResult
List<T> interleave(
  1. Iterable<T> other
)

Interleaves this with other: a0, b0, a1, b1, .... Stops when the shorter runs out.

Returns a new list with elements from this and other interleaved.

Implementation

@useResult
List<T> interleave(Iterable<T> other) {
  final Iterator<T> iterA = iterator;
  final Iterator<T> iterB = other.iterator;
  final List<T> result = <T>[];
  while (true) {
    if (iterA.moveNext()) {
      result.add(iterA.current);
    } else {
      break;
    }
    if (iterB.moveNext()) {
      result.add(iterB.current);
    } else {
      break;
    }
  }
  return result;
}