23 lines
467 B
GDScript
23 lines
467 B
GDScript
class_name PeekableIter extends Iterator
|
|
|
|
var _iter: Iterator
|
|
var _peeked: Variant
|
|
|
|
func _init(iter: Iterator) -> void:
|
|
_iter = iter
|
|
|
|
func clone() -> PeekableIter:
|
|
return PeekableIter.new(_iter.clone())
|
|
|
|
func peek() -> Option:
|
|
if _peeked == null:
|
|
_peeked = _iter.next()
|
|
return _peeked
|
|
|
|
func next() -> Option:
|
|
if _peeked == null:
|
|
return _iter.next()
|
|
else:
|
|
var value = _peeked
|
|
_peeked = null
|
|
return value
|