日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lua 自实现pairs

發布時間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lua 自实现pairs 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1.實現一個簡單的pairs
    • 2.實現對象的pairs

1.實現一個簡單的pairs

local tbl = {} function GenerateData()--構造一個哈希 tablefor i = 1,10 dolocal value = math_random(1,100000)tbl[value] = valueend end--自己實現的pairs function selfPairs(tbl,key)-- assert(tbl == "table")--迭代器函數local function iterator(tbl,key)return next(tbl,key)end--這里的tbl 會作為 迭代器的第一個參數, nil會作為迭代器的第二個參數 以此類推return iterator,tbl,nil endGenerateData() for k,v in selfPairs(tbl) doprintx(k,v) end--自己實現的pairs 返回一個數組table function selfPairs2(tbl,key)assert(type(tbl) == "table")local newTbl = {}for _,v in pairs(tbl) dotable.insert(newTbl,v)endtable.sort(newTbl,function(a,b)return a > bend)--迭代器函數local function iterator(tbl,key)return next(tbl,key)end--這里的newTbl 會作為 迭代器的第一個參數, nil會作為迭代器的第二個參數 以此類推return iterator,newTbl,nil endGenerateData()for k,v in selfPairs2(tbl) doprintx(k,v) end

2.實現對象的pairs

--自己的雙向鏈表類 clsSelfDLinkObj = STRUCT.clsDLink:Inherit("clsSelfDLinkObj")--復寫pairs function clsSelfDLinkObj:pairs()local function iterator(self,node)--把條件運算符當成三元運算符使用,可能造成死循環--注意:下面這么寫肯定會死循環 因為當遍歷到鏈表的尾節點時, Next為nil, 此時 node 又等于 self.m_Header 陷入死循環--[[node = node and node.Next or self.m_Headerif node and node.Data thenreturn node, node.Dataend]]--修正 只要沒有環存在,就不會陷入死循環if not node thennode = self.m_Headerelsenode = node.Nextendreturn node,node and node.Dataend--這里的self 會作為 迭代器的第一個參數, nil會作為迭代器的第二個參數 以此類推return iterator,self,nil endlocal TEST_COUNT = 5 function TestDLink()local SelfDLinkObj = clsSelfDLinkObj:New()clsSelfDLinkObj:OnCreate("EXREA_TEST")for i= 1,TEST_COUNT doSelfDLinkObj:Push(i)endfor Node,Data in SelfDLinkObj:pairs() doprintx(Node,Data)end end TestDLink()

總結

以上是生活随笔為你收集整理的lua 自实现pairs的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。