map<T> 方法

Iterable<T> map<T>(
  1. T toElement(
    1. E e
    )
)

通过 toElement 修改的此可迭代对象的当前元素。

返回一个新的惰性 Iterable,其元素是通过在迭代顺序中对此 Iterable 的每个元素调用 toElement 创建的。

返回的可迭代对象是惰性的,因此它不会在此可迭代对象的元素上迭代,直到它自身被迭代,然后它会应用 toElement 来逐个创建元素。转换后的元素不会被缓存。多次遍历返回的 Iterable 将会在每次迭代中对每个元素调用一次提供的 toElement 函数。

返回的可迭代对象上的方法可以省略在不需要结果的情况下调用 toElement。例如,elementAt 可能只调用一次 toElement

等同于

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

示例

var products = jsonDecode('''
[
  {"name": "Screwdriver", "price": 42.00},
  {"name": "Wingnut", "price": 0.50}
]
''');
var values = products.map((product) => product['price'] as double);
var totalPrice = values.fold(0.0, (a, b) => a + b); // 42.5.

实现

Iterable<T> map<T>(T toElement(E e)) => MappedIterable<E, T>(this, toElement);