object_iterators.gd 903 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. class MyIterator:
  2. var count: int
  3. func _init(p_count: int) -> void:
  4. count = p_count
  5. func _iter_init(arg: Array) -> bool:
  6. prints("_iter_init", arg)
  7. arg[0] = 0
  8. return arg[0] < count
  9. func _iter_next(arg: Array) -> bool:
  10. prints("_iter_next", arg)
  11. arg[0] += 1
  12. return arg[0] < count
  13. func _iter_get(arg: Variant) -> Variant:
  14. prints("_iter_get", arg)
  15. return arg
  16. func test():
  17. var container := PackedDataContainer.new()
  18. var _err := container.pack([{
  19. id = 123,
  20. node_path = ^"/some/path",
  21. data = PackedByteArray(),
  22. }])
  23. for ref: PackedDataContainerRef in container:
  24. for key: String in ref:
  25. print(key)
  26. print("===")
  27. for ref: Variant in container:
  28. for key: String in ref:
  29. print(key)
  30. print("===")
  31. var hard_custom := MyIterator.new(3)
  32. for x in hard_custom:
  33. print(x)
  34. print("===")
  35. var weak_custom: Variant = MyIterator.new(3)
  36. for x in weak_custom:
  37. print(x)