dart - 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))));
解决方案
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
, ...
推荐阅读
- javascript - 将文件放入驱动器 API v3
- python - Python 中的 Cplex - 学生许可
- javascript - 使用我的库对应的 .d.ts 代码检查我的库 .js 代码
- jquery - mvc 应用程序日历在 IE 中不起作用
- c# - c#访问自定义设置文件
- sql - 查询错误 (1241):操作数应包含 1 列
- coinbase-api - 如何使用 Coinbase API 向我的用户发送付款?
- java - 接收一个整数并返回传递的数字的阶乘
- javascript - Vue.js - 在模式内引用输入以更新 Firestore 数据库
- c# - 虚拟驱动器在最初的 15 分钟内未显示在客户端计算机中