1、首先根據迴圈佇列的理論(先入先出)想好類結構
2、學習lua的元表和元方法怎麼建立類,訪問冒號需要訪問類裡的區域性成員變數 點訪問模組的方法不需要變數
local queue =
function queue:
new(len)
local tempque =,}
return
setmetatable
(tempque,
)end
function queue:
getsize()
return self.size
endfunction queue:
isempty()
if self.size <=
0 then
return true
else
return false
endendfunction queue:
isfull()
if self.size == self.maxlength then
return true
else
return false
endendfunction queue:
push
(id)
if self:
isfull
() then
--print
("[queue] push error: queue full"
)return false
endlocal index =
(self.tail % self.maxlength)
self.que[index]
= id
--print
("[queue] "
, index,
" ", self.que[index]
) self.tail = self.tail +
1 self.size = self.size +1--
print
("[queue] push success"
)return true
endfunction queue:
pop(
)if self:
isempty
() then
--print
("[queue] pop error: queue empty"
)return false
endid = self.que[queue.head]
self.head = self.head +
1 self.head = self.head % self.maxlength
self.size = self.size -
1return true, id
endfunction queue:
top(
)return self.que[self.head]
endfunction queue:
find
(id)
--print
("[queue]head "
, self.head,
" tail "
, self.tail)
for i = self.head, self.size + self.tail -1do
if self.que[i % self.maxlength]
== id then
return true
endend
return false
endfunction queue:
clear()
self.size =
0 self.tail =
0 self.head =
0end
function queue:
deletequeue()
self.que =
self.que = nil
self.size =
0 self.tail =
0 self.head =
0end
return queue
lua學習之迴圈
參考 目錄 while迴圈 for迴圈 泛型for迴圈 reapeat util 迴圈控制語句 while condition do statements end在condition為true的時候執行迴圈體。for var exp1,exp2,exp3 do 執行體 endvar從exp1變化到e...
Lua學習筆記 迴圈
while迴圈 當條件為真時,執行迴圈內的語句。for迴圈 重複執行指定語句,可以控制執行次數。repeat until 重複執行語句直到條件為真。迴圈巢狀 可以在乙個迴圈內巢狀迴圈語句 while迴圈 a 0 while a 10 while condition do do a a 1 state...
Lua學習之元表
在 lua table 中我們可以訪問對應的key來得到value值,但是卻無法對兩個 table 進行操作。因此 lua 提供了元表 metatable 允許我們改變table的行為,lua中的每個值都可以用乙個metatable來表示,每個行為則關聯了對應的元方法。元表的處理有兩個很重要的函式 ...