没有内置的东西。我今天写这个的方式是:
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
上提供一个API List
,可以按照您的描述方式使用。
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]),];
}
,
简单且不安全的方法(它需要符合输入数据数组的大小)。
import 'package:enumerable/enumerable.dart';
import 'package:lists/lists.dart';
import 'package:tuple/tuple.dart';
void main(List<String> args) {
final list = [1,8];
final q2 = StepList(0,list.length - 1,2)
.select((e) => Tuple2.fromList(list.sublist(e,e + 2)));
print(q2);
final q4 = StepList(0,4)
.select((e) => Tuple4.fromList(list.sublist(e,e + 4)));
print(q4);
}
结果:
([1,2],[3,4],[5,6],[7,8])
([1,8])
另一种方式:
import 'package:enumerable/enumerable.dart';
import 'package:lists/lists.dart';
void main(List<String> args) {
final list = [1,8];
print(group(list,2));
print(group(list,4));
print(group(list,8));
}
Iterable<List<E>> group<E>(List<E> input,int size) {
if (input.isEmpty) {
return List<List<E>>();
}
if (input.length % size != 0) {
throw ArgumentError('Bad size: $size');
}
final query = StepList(0,input.length - 1,size)
.select((e) => input.sublist(e,e + size));
return query;
}
本文链接:https://www.f2er.com/3141447.html