range function

Iterable<int> range(
  1. int lenOrStart, [
  2. int? end
])

Generates an integer sequence, similar to Python's range.

  • range(n) returns 0 .. n-1.
  • range(start, end) returns start .. end-1. When end < start, the bounds are automatically swapped so the result is never empty.

Implementation

Iterable<int> range(int lenOrStart, [int? end]) {
  if (end == null) {
    return Iterable<int>.generate(lenOrStart, (int index) => index);
  }
  int start = lenOrStart;
  int stop = end;
  if (stop < start) {
    final int tmp = start;
    start = stop;
    stop = tmp;
  }
  final int length = stop - start;
  return Iterable<int>.generate(length, (int index) => start + index);
}