为何在Dart的map方法体中无法向列表x添加元素?
问题原因解析
核心原因:Dart的map()是惰性求值方法
Dart 中的map()方法不会在调用时立即执行传入的处理函数,它只会返回一个待执行的迭代器对象,只有当你主动去"消费"这个迭代器(比如遍历它、调用toList()/forEach()等方法)时,里面的逻辑才会被触发执行。
你只调用了y.map((item) => x.add(item +2)),但没有对返回的迭代器做任何消费操作,所以x.add()代码根本没机会运行,自然x列表里没有元素。
修正示例
如果要让x成功添加元素,可以通过以下方式触发迭代器的执行:
List<int> x = []; List<int> y = [1,2,3,4]; // 方式1:用forEach消费map返回的迭代器 y.map((item) => item + 2).forEach(x.add); // 方式2:转成List触发执行(如果需要保留处理后的列表也可以这么做) var processedList = y.map((item) => item + 2).toList(); x.addAll(processedList); // 方式3:直接用forEach遍历y,更简洁 y.forEach((item) => x.add(item + 2));
内容的提问来源于stack exchange,提问作者mazen amr
相关产品推荐
相关产品推荐

