expand<<wbr><span class="type-parameter">T 方法

Iterable<T expand<<wbr><span class="type-parameter">T<<wbr><span class="type-annotation">Iterable<T<wbr><span class="parameter-name">toElements
  1. Iterable<T toElements
    1. E element
    )
)

将此Iterable的每个元素展开成零个或多个元素。

结果的可迭代对象将按照迭代顺序遍历由toElements返回的每个元素。

返回的可迭代对象是懒加载的,每次遍历返回的可迭代对象时,都会为该可迭代对象的每个元素调用toElements

示例

Iterable<int> count(int n) sync* {
  for (var i = 1; i <= n; i++) {
    yield i;
   }
 }

var numbers = [1, 3, 0, 2];
print(numbers.expand(count)); // (1, 1, 2, 3, 1, 2)

等价于

Iterable<T> expand<T>(Iterable<T> toElements(E e)) sync* {
  for (var value in this) {
    yield* toElements(value);
  }
}

实现

Iterable<T> expand<T>(Iterable<T> toElements(E element)) =>
    ExpandIterable<E, T>(this, toElements);