23 lines
562 B
GDScript
23 lines
562 B
GDScript
class_name FusedIterator extends Iterator
|
|
|
|
var _iters: Array[Iterator]
|
|
var _index: int = 0
|
|
|
|
func _init(iters: Array[Iterator]) -> void:
|
|
_iters = iters
|
|
|
|
static func from(iterator: Variant) -> FusedIterator:
|
|
var arr: Array[Iterator] = []
|
|
for iter in iterator:
|
|
arr.append(iter)
|
|
return FusedIterator.new(arr)
|
|
|
|
func next() -> Option:
|
|
if _index >= len(_iters): return Option.none
|
|
|
|
match _iters[_index].next():
|
|
var value when value.is_some():
|
|
return value
|
|
_:
|
|
_index += 1
|
|
return next()
|