until method

List<int> until(
  1. int end, {
  2. int step = 1,
})

返回一个 [m, n)的列表

Example:

3.until(6); // (3, 4, 5)
2.until(-2); // (2, 1, 0, -1)

如果提供了 step ,它将被用作迭代的步长。 step 总是正的,即使迭代的方向在减小。

Example:

8.until(3, by: 2); // (8, 6, 4)

Implementation

List<int> until(int end, {int step = 1}) {
  if (step < 1) {
    throw ArgumentError(
        'Invalid step size: $step. Step size must be greater than 0');
  }
  final count = ((end - this).abs() / step).ceil();
  // 数值生成函数
  final int Function(int) generator = this >= end
      ? (index) => this - (step * index)
      : (index) => this + (step * index);
  return List<int>.generate(count, generator);
}