Advertisement
SigmaBoy456

Basic Dict/Array/LinkedList Event OOP

Feb 16th, 2025 (edited)
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.84 KB | None | 0 0
  1. local Nodell = {}
  2. Nodell.__index = Nodell
  3.  
  4. function Nodell.new(signal)
  5.     return setmetatable({Listener = signal}, Nodell)
  6. end
  7.  
  8. local LinkedList = {}
  9. local Array = {}
  10. local Dict = {}
  11. LinkedList.__index = LinkedList
  12. Array.__index = Array
  13. Dict.__index = Dict
  14.  
  15. -- Linked List Code
  16. function LinkedList.new()
  17.     return setmetatable({Next = nil}, LinkedList)
  18. end
  19.  
  20. function LinkedList:Connect(signal)
  21.     local NewNode = Nodell.new(signal)
  22.     if not self.Next then
  23.         self.Next = NewNode
  24.     else
  25.         local current = self.Next
  26.         while current and current.Next do
  27.             current = current.Next
  28.         end
  29.         current.Next = NewNode
  30.     end
  31. end
  32.  
  33. function LinkedList:Fire(...)
  34.     local current = self.Next
  35.     while current do
  36.         current.Listener(...)
  37.         current = current.Next
  38.     end
  39. end
  40.  
  41. -- Array Main Code
  42. function Array.new()
  43.     return setmetatable({}, Array)
  44. end
  45.  
  46. function Array:Connect(signal)
  47.     local NewNode = Nodell.new(signal)
  48.     self[#self+1] = NewNode
  49. end
  50.  
  51. function Array:Fire(index, ...)
  52.     for i, v in pairs(self) do
  53.         if (i == index) then
  54.             v.Listener(...)
  55.         end
  56.     end
  57. end
  58.  
  59. -- Dict Code
  60. function Dict.new()
  61.     return setmetatable({}, Dict)
  62. end
  63.  
  64. function Dict:Connect(HandlerName, signal)
  65.     local NewNode = Nodell.new(signal)
  66.     Dict[HandlerName] = NewNode
  67. end
  68.  
  69. function Dict:Fire(HandlerName, ...)
  70.     Dict[HandlerName].Listener(...)
  71. end
  72. -- Test Result
  73. local ll1 = LinkedList.new()
  74. ll1:Connect(function(msg)
  75.     print("LinkedList Event Handler 1 : " .. msg)
  76. end)
  77.  
  78. ll1:Connect(function(msg)
  79.     print("LinkedList Event Handler 2 : " .. msg)
  80. end)
  81. ll1:Fire("Hello World")
  82.  
  83. local arr1 = Array.new()
  84. arr1:Connect(function(msg)
  85.     print("Array Event Handler 1 : " .. msg)
  86. end)
  87.  
  88. arr1:Fire(1, "Hello World")
  89.  
  90. local dict1 = Dict.new()
  91. dict1:Connect("Sigma", function(msg)
  92.     print("Dict 1 Event Handler : " .. msg)
  93. end)
  94. dict1:Fire("Sigma", "Hello World")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement