zip7<T1, T2, T3, T4, T5, T6, T7> function
Iterable<Tuple7<T1, T2, T3, T4, T5, T6, T7>>
zip7<
T1, T2, T3, T4, T5, T6, T7>( - Iterable<T1> it1,
- Iterable<T2> it2,
- Iterable<T3> it3,
- Iterable<T4> it4,
- Iterable<T5> it5,
- Iterable<T6> it6,
- Iterable<T7> it7,
)
Implementation
Iterable<Tuple7<T1, T2, T3, T4, T5, T6, T7>> zip7<T1, T2, T3, T4, T5, T6, T7>(
Iterable<T1> it1,
Iterable<T2> it2,
Iterable<T3> it3,
Iterable<T4> it4,
Iterable<T5> it5,
Iterable<T6> it6,
Iterable<T7> it7) sync* {
final iter1 = it1.iterator;
final iter2 = it2.iterator;
final iter3 = it3.iterator;
final iter4 = it4.iterator;
final iter5 = it5.iterator;
final iter6 = it6.iterator;
final iter7 = it7.iterator;
var keep_running = true;
while (keep_running) {
final move1 = iter1.moveNext();
final move2 = iter2.moveNext();
final move3 = iter3.moveNext();
final move4 = iter4.moveNext();
final move5 = iter5.moveNext();
final move6 = iter6.moveNext();
final move7 = iter7.moveNext();
final all_true =
move1 && move2 && move3 && move4 && move5 && move6 && move7;
final all_false =
!move1 && !move2 && !move3 && !move4 && !move5 && !move6 && !move7;
assert((all_true || all_false), 'iteration length must be equal');
if (all_true) {
yield Tuple7<T1, T2, T3, T4, T5, T6, T7>(
iter1.current,
iter2.current,
iter3.current,
iter4.current,
iter5.current,
iter6.current,
iter7.current);
}
keep_running = all_true;
}
}