.map()
- 现象
 
['a','b','c'].map((e)=> print(e));print(e)并不会执行。['a','b','c'].map((e)=> print(e)).toList();print(e)会执行,print(['a','b','c'].map((e)=> print(e)))print(e)也会执行。
- 
原因
['a','b','c'].map((e)=> print(e));只是创建了一个映射,而没有实际对其进行迭代,因此print(e)不会执行。 为了确保print(e)被执行,你可以调用.toList()或.forEach()来强制执行迭代,如下所示['a','b','c'].forEach((e) => print(e));这将遍历数组中的每个元素,并将其作为参数传递给
print()函数,从而在控制台中输出每个元素。print函数会在控制台中打印传入的参数。当你调用print(['a','b','c'].map((e)=> print(e)))时,它会执行以下步骤:['a','b','c']创建一个包含'a'、'b'和'c'的列表。.map((e) => print(e))创建一个新的映射,将列表中的每个元素作为参数传递给print函数,并将结果作为一个可迭代的对象返回。- 最终这个可迭代的对象被传递给外部的
print函数,然后在控制台中输出。 
换句话说,
print(['a','b','c'].map((e)=> print(e)))的外部print语句会输出映射返回的可迭代对象,而内部的print语句会输出每个元素。需要注意的是,由于
map返回的是一个延迟计算的可迭代对象,所以在外部的print语句中打印的内容可能不是立即执行的,它会在迭代对象时才被计算和输出。