intersperseOuter<T> function

Iterable<T> intersperseOuter<T>(
  1. T element,
  2. Iterable<T> iterable
)

Puts element between every element in list and at the bounds of list.

Example:

final list1 = intersperseOuter(2, <int>[]); // [];
final list2 = intersperseOuter(2, [0]); // [2, 0, 2];
final list3 = intersperseOuter(2, [0, 0]); // [2, 0, 2, 0, 2];

Implementation

Iterable<T> intersperseOuter<T>(T element, Iterable<T> iterable) sync* {
  final iterator = iterable.iterator;
  if (iterable.isNotEmpty) {
    yield element;
  }
  while (iterator.moveNext()) {
    yield iterator.current;
    yield element;
  }
}