flutter - 迭代两个或更多组中的列表
问题描述
我喜欢遍历一个列表并将它们分成几对,如下所示:
List<String> list = [1,2,3,4,5,6,7,8];
List<Tuple2> listOfTuples = list.take2((value1,value2) => Tuple2(value1,value2));
print(listOfTuples.toString()); // output => [[1,2],[3,4],[5,6],[7,8]]
我知道有一个take(count)
in dart 但我没有找到一个很好的例子。
我知道我可以用for
循环等来做到这一点,但我想知道我们是否有更优雅的方式。
解决方案
没有内置任何东西。我今天写这个的方式是:
var list = [1, 2, 3, 4, 5, 6, 7, 8];
var tuples = [
for (int i = 0; i < list.length - 1; i += 2) Tuple2(list[i], list[i + 1]),
];
您可以编写一个扩展程序,提供一个可以按照您描述take2
的List
方式使用的 api。
extension Take2<T> on List<T> {
List<R> take2<R>(R Function(T, T) transform) => [
for (int i = 0; i < this.length - 1; i += 2)
transform(this[i], this[i + 1]),
];
}
推荐阅读
- node.js - 节点 gyp 不工作(WindowsError:[错误 183] ═хтючьюцэю ёючфрЄ№Їрщы,)
- c++ - 将二进制文件添加到其他人的柯南食谱中
- jquery - 当通过 AJAX 重定向收到 401 时,有没有办法在 Chrome 中删除 WWW-Authenticate?
- java - 片段上的 onCreate 总是从错误的位置开始
- python - 在 Flask 中获取特定的帖子类别
- excel - 如何将文件夹中的所有文件附加到电子邮件 - vba 代码
- laravel - CORS Laravel VueJS
- excel - 根据单元格值删除行不起作用
- c# - 使用 EF 6 和 MySQL 加载多个孙子集合时出错
- javascript - 函数不是函数?