denissini15

Untitled

Dec 4th, 2021
568
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. local raw = {}
  3.  
  4. local find = function(tbl, ind)
  5.     for i, v in pairs(raw) do
  6.         if v[1] == ind then
  7.             return i,v
  8.         end
  9.     end
  10. end
  11.  
  12.  
  13.  
  14. local mpairs = function(tbl)
  15.     local raw = tbl.___getraw()
  16.     return ipairs(raw)
  17. end
  18.  
  19. local meta = setmetatable({___getraw = function() return raw end}, {
  20.     __newindex = function(self, index, value)
  21.         local i,v = find(raw, index)
  22.         if v then
  23.             if value == nil then
  24.                 table.remove(raw, i)
  25.             else
  26.                 raw[i][2] = value
  27.             end
  28.         else
  29.             table.insert(raw, {index, value})
  30.         end
  31.     end,
  32.     __index = function(self, index)
  33.         local i, v = find(raw, index)
  34.         return v
  35.     end,
  36. })
  37.  
  38.  
  39. meta.a = 1
  40. meta.b = 2
  41. meta.c = 3
  42. meta.d = 4
  43.  
  44. for _,vals in mpairs(meta) do
  45.     local i, v  = unpack(vals)
  46.     print(i,v)
  47. end
  48.  
  49.  
RAW Paste Data