首页 > 解决方案 > Dart:如何将函数应用于列表列表的每个内部元素

问题描述

显然玩飞镖,但对它还是很陌生并实施井字游戏。所以我有一个获胜位置列表的列表,并想检查是否有任何列表是输入移动列表的子列表。听起来很简单,所以我申请了我想检查我的状况的内部列表的每个元素。实现这一目标的飞镖方法是什么。这是行不通的,因为 map 需要 void 类型的函数,并且我显然返回了一些调用来打印每个内部列表的每个元素。为什么它根本没有向我显示任何错误。

我尝试使用 .forEach 和 .takeWhile 示例,但无法正常工作。

List <List<int>> winMoves = new List.generate(8, (i) => new List(3));
winMoves[0]=[1,2,3];
winMoves[1]=[4,5,6];
winMoves[2]=[7,8,9];
winMoves[3]=[1,4,7];
winMoves[4]=[2,5,8];
winMoves[5]=[3,6,9];
winMoves[6]=[1,5,9];
winMoves[7]=[3,5,7];
winMoves.map((list) => (list.forEach((el) => print(el))));

标签: dart

解决方案


import 'package:collection/collection.dart' show ListEquality;

...

const eq = const ListEquality<int>();
print(winMoves.indexWhere((list) => eq.equals(list, [1, 5, 9])));

根据您想要的结果,您还可以使用where, firstWhere, any, ...


推荐阅读