Guest User

Untitled

a guest
Jul 19th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. __idmt = {
  2. __lt = function(a, b)
  3. if a[1] == b[1] then
  4. if a[2] == nil then print(debug.traceback("A")) end
  5. if b[2] == nil then print(debug.traceback("B")) end
  6. return a[2] < b[2]
  7. else
  8. return a[1] < b[1]
  9. end
  10. end;
  11. __le = function(a, b)
  12. if a[1] == b[1] then
  13. return a[2] <= b[2]
  14. else
  15. return a[1] <= b[1]
  16. end
  17. end;
  18. __eq = function(a, b)
  19. return a[1] == b[1] and a[2] == b[2]
  20. end;
  21. __tostring = function(a)
  22. return (a[0] or "nil") .. ", " .. (a[1] or "nil")
  23. end;
  24. }
  25.  
  26. function ObjectIterator(list)
  27. local function jaggedListIterator(list, index)
  28. if index[2] == nil then
  29. index[1] = next(list, index[1])
  30. if index[1] == nil then
  31. return nil
  32. end
  33. end
  34. local i, k = next(list[index[1]], index[2])
  35. print("DBG", index)
  36. index[2] = i
  37. return index, k
  38. end
  39. local nlt = {nil, nil}
  40. setmetatable(nlt, __idmt)
  41. return jaggedListIterator, list, nlt
  42. end
  43.  
  44. list = {
  45. {1, 2, 3, 4},
  46. {5, 6, 7},
  47. {8, 9, 10, 11, 12, 13, 14},
  48. {15},
  49. {16, 17, 18},
  50. {19, 20},
  51. }
  52.  
  53. for a, b in ObjectIterator(list) do
  54. if b ~= nil then
  55. print(a,": ", b)
  56. end
  57. end
Add Comment
Please, Sign In to add comment