这是一个用 Lua 实现的简单的队列类,符合C#命名习惯。在这个队列类中,我们内部使用了一个 list 表来存储数据,
并且在每次 Enqueue 和 Dequeue 的时候都会更新队列长度 Count 的值。
这个队列类可以通过 Enqueue 将数据添加到队列中,通过 Dequeue 从队列中移除并返回队列的第一个元素,
也可以使用 Peek 方法返回队列的第一个元素而不移除它。队列中的元素遵循先进先出的原则。
该队列类可以用于实现一些简单的数据结构,例如事件队列、消息队列等等。
该类支持 Enqueue 和 Dequeue 操作,用于将元素加入队列尾部和从队列头部取出元素;支持 Peek
操作,用于查看队列头部的元素,但不从队列中删除;支持 Clear 操作,用于清空队列;支持 Count 和 isEmpty
操作,用于获取队列中元素的数量以及判断队列是否为空。
---@class Queue 队列类
---@field private list table 队列内部使用的list
---@field public Count number 队列长度
Queue = class("Queue")
---@param self Queue
function Queue:ctor()
self.list = {}
self.Count = 0
end
---@param self Queue
---@param item any
function Queue:Enqueue(item)
table.insert(self.list, item)
self.Count = self.Count + 1
end
---@param self Queue
---@return any
function Queue:Dequeue()
if self.Count == 0 then
return nil
end
local item = self.list[1]
table.remove(self.list, 1)
self.Count = self.Count - 1
return item
end
---@param self Queue
---@return any
function Queue:Peek()
if self.Count == 0 then
return nil
end
return self.list[1]
end
该类支持 Enqueue 和 Dequeue 操作,用于将元素加入队列尾部和从队列头部取出元素;支持 Peek 操作,用于查看队列头部的元素,但不从队列中删除;支持 Clear 操作,用于清空队列;支持 Count 和 isEmpty 操作,用于获取队列中元素的数量以及判断队列是否为空。
使用反范例:
local q = Queue.new()
q:Enqueue("apple")
q:Enqueue("banana")
q:Enqueue("cherry")
while q.Count > 0 do
local item = q:Dequeue()
print(item)
end
输出结果为
apple
banana
cherry