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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Lua开发学习4-普通循环和迭代器循环

發布時間:2023/12/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lua开发学习4-普通循环和迭代器循环 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說句實話,每當看到Lua代碼,我都感覺是半個SQL代碼,寫起來還是感覺有點恐怖。

while循環:

與C#的while循環類似,沒有什么好說的;

--------Lua的while循環 while(condition)dostatementsend

?

For循環

exp1為起點,exp2為終點,exp3為步進值,若exp3沒有寫,則默認為1

Lua的For循環 for var=exp1,exp2,exp3 do <執行體> end

?

Repeat循環:

看起來很高大上的說法, 實則就是我們平時使用的do..while循環而已

a = 10 --[ 執行循環 --] repeatprint("a的值為:", a)a = a + 1 until( a > 15 )

?

迭代器循環:

C#里面的迭代器循環使用的最多的當然是foreach循環了,當然協程也是個迭代器循環,我們這里只是舉例,所以我們這里就不要講太多了

array = {"Lua", "Tutorial"} --一個Table,也能想象成一個字典

lua的迭代器分為無狀態迭代器和多狀態迭代器

無狀態迭代器:

function square(iteratorMaxCount,currentNumber)if currentNumber<iteratorMaxCountthencurrentNumber = currentNumber+1return currentNumber, currentNumber*currentNumberend endfor i,n in square,3,0 --square是一個可以參與運行的函數,3和0為參數 doprint(i,n) end

多狀態迭代器:

多狀態迭代器可以遍歷一個函數的結果集和pairs和ipairs兩種特殊迭代方式

迭代函數的結果集:

array = {"Lua", "Tutorial"}function elementIterator (collection)local index = 0local count = #collection --井號能取出collection參數的數量,若為[1] = ,[2] = ,則取出從第一個元素連續最多元素的數量,假如沒有3,直接跳到了[4] = ,則#collection的值為2-- 閉包函數return function ()index = index + 1if index <= countthen-- 返回迭代器的當前元素return collection[index]endend endfor element in elementIterator(array) doprint(element) end

?

pairs: 迭代 table,可以遍歷表中所有的 key 可以返回 nil

ipairs: 迭代數組,不能返回 nil,如果遇到 nil 則退出

local tab= { [1] = "a", [3] = "b", [4] = "c" } for i,v in pairs(tab) do -- 輸出 "a" ,"b", "c" ,print( tab[i] ) end for i,v in ipairs(tab) do -- 輸出 "a" ,k=2時斷開 print( tab[i] ) end

ipairs的迭代,會像C#的foreach那樣,挨個寫入堆棧。

但重要點說明一下paris跌代,或取的數據順序并不是一個讓人很好理解的順序,因為它并不會按照1234這種順序排下來,paris迭代產生的結果列表的排列,是按照一定的希哈規律來排列的,所以并不是無規則的無序,而是按哈規則的有序。

如果數據量非常龐大的話,paris的希哈排列,會造成性能上非常大的優勢,倘若將列表值賦值給C#,然后以linq、lambda的方式來取,則也并不需要有序。

所以不要糾結于paris中看似無序實則有序的排列。

轉載于:https://www.cnblogs.com/vsirWaiter/p/6712529.html

總結

以上是生活随笔為你收集整理的Lua开发学习4-普通循环和迭代器循环的全部內容,希望文章能夠幫你解決所遇到的問題。

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