signalis-eb/godot/addons/iterator/dict.gd

23 lines
567 B
GDScript

class_name DictionaryIterator extends Iterator
class Entry extends RefCounted:
var key
var value
func _init(key: Variant, value: Variant) -> void:
self.key = key
self.value = value
var dict: Dictionary
var keys: Iterator
func _init(dict: Dictionary) -> void:
self.dict = dict
self.keys = ListIterator.from_array(dict.keys())
func next() -> Option:
match keys.next():
var _key when _key.is_some():
var key = _key.unwrap()
return Option.some(Entry.new(key, dict[key]))
return Option.none