Lua學習 迴圈佇列實現 lua元表建立類

2021-09-29 11:25:46 字數 2104 閱讀 5842

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來表示,每個行為則關聯了對應的元方法。元表的處理有兩個很重要的函式 ...