splitOverlappingTuple2<T> function
重複ありでリストを2つの要素ずつ取り出したリストを返す
splitOverlappingTuple2(['a', 'b', 'c', 'd']) // IList([('a', 'b'), ('b', 'c'), ('c', 'd')])
Implementation
@useResult
IList<(T, T)> splitOverlappingTuple2<T>(Iterable<T> iterable) {
final firstOrNull = iterable.firstOrNull;
if (firstOrNull == null) {
return const IListConst([]);
}
return iterable.skip(1).fold<({T prevItem, IList<(T, T)> list})>(
(prevItem: firstOrNull, list: const IListConst([])),
(value, element) => (
prevItem: element,
list: IList([...value.list, (value.prevItem, element)]),
),
).list;
}