Queue_Tips.lua 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. ---
  2. --- Generated by EmmyLua(https://github.com/EmmyLua)
  3. --- Created by xxn.
  4. --- DateTime: 2021/2/1 16:09
  5. ---
  6. ---@class Queue
  7. Queue = {}
  8. Queue.__index = Queue
  9. function Queue:New()
  10. local o = { first = 0, last = -1, dataTb = {} }
  11. setmetatable(o, self)
  12. return o
  13. end
  14. function Queue:PushFirst(value)
  15. self.first = self.first - 1
  16. self.dataTb[self.first] = value
  17. end
  18. function Queue:PushLast(value)
  19. self.last = self.last + 1
  20. self.dataTb[self.last] = value
  21. end
  22. function Queue:PopFirst()
  23. if self.first > self.last then
  24. ---logPurple("queue is empty")
  25. return
  26. end
  27. local value = self.dataTb[self.first]
  28. self.dataTb[self.first] = nil
  29. self.first = self.first + 1
  30. return value
  31. end
  32. function Queue:PopLast()
  33. if self.first > self.last then
  34. ---logPurple("queue is empty")
  35. return
  36. end
  37. local value = self.dataTb[self.last]
  38. self.dataTb[self.last] = nil
  39. self.last = self.last - 1
  40. return value
  41. end
  42. function Queue:IsEmpty()
  43. return self.first > self.last
  44. end
  45. function Queue:Count()
  46. if self.first > self.last then
  47. return 0
  48. end
  49. return Mathf.Abs((Mathf.Abs(self.last) - Mathf.Abs(self.first))) + 1
  50. end
  51. function Queue:LastValue()
  52. if self.first > self.last then
  53. ---logPurple("queue is empty")
  54. return
  55. end
  56. local value = self.dataTb[self.last]
  57. return value
  58. end
  59. function Queue:GetValueByIndex(index)
  60. if self.first > self.last then
  61. ---logPurple("queue is empty")
  62. return
  63. end
  64. index = index - 1 + self.first
  65. local value = self.dataTb[index]
  66. return value
  67. end
  68. function Queue:Clear()
  69. self.first = 0
  70. self.last = -1
  71. self.dataTb = {}
  72. end