lua陣列
特點:陣列中的元素的資料型別是相同的。
索引以整數表示,索引起始值為1.
陣列大小是不固定的。(不同於c中的陣列,與python中的list類似。)
一維陣列:
示例1:
arr =
for index = 0,2 do
print(arr[index])
end結果1:依次輸出nil, one, two。--輸出nil的原因是,陣列索引從1開始。
示例2:
arr = {}
for index = -2, 2 do
arr[index] = index * 2
end結果2:依次輸出:-4, -2, 0, 2, 4 --陣列索引可以是負數。
多維陣列:陣列中包含陣列。
lua迭代器
定義:迭代器(iterator):是一種物件,能夠用來遍歷標準模板庫容器中的部分或全部元素;
每個迭代器物件代表容器中的確定的位址;
常常用函式來描述迭代器,每次呼叫該函式,就返回集合的下乙個元素。
lua中的迭代器包含以下兩種型別:
無狀態的迭代器。
多狀態的迭代器。
泛型for迭代器:
特點:泛型for在自己內部儲存了:迭代函式、狀態常量、控制變數。
泛型for迭代器提供了集合的key/value對。
語法:for key, value in pairs(t) do
print(key, value)
end說明:
key, value:變數列表。
pairs(t):表示式列表。
示例:arr =
for key, value in ipairs(arr) do
print(key, value)
end結果:依次輸出: 1 one\n 2 two
說明:ipairs()是lua提供的預設的迭代函式。
泛型for的執行過程:
初始化,計算in後面表示式的值。表示式返回泛型for需要的三個值:迭代函式、狀態常量、控制變數。賦值過程與多賦值語句一樣。
將狀態常量和控制變數作為引數呼叫迭代函式。
將迭代函式的返回值,賦值給變數列表。
返回nil後,結束迴圈。
示例:arr =
for key, value in ipairs(arr) do print(value) end
結果:依次輸出one, two。--迭代函式返回nil後,迴圈結束,因此不會輸出three。
返回第2步繼續迴圈過程。
無狀態的迭代器:
特點:不保留任何狀態的迭代器;
避免了建立閉包花費額外的代價;
最典型的例子是:ipairs()
示例(實現數字n的平方):
function square(iteratormaxcount, currentnumber):
if (currentnumber < iteratormaxcount)
then
currentnumber = currentnumber + 1
return currentnumber, currentnummber * currentnumber
endend
for index, value in square, 3, 0 do print(value) end
結果:依次輸出1, 4, 9
說明:square, 3, 0分別是泛型for中的迭代函式,狀態變數,控制變數。
多狀態的迭代器:
特點:不僅僅需要簡單的狀態常量和控制變數,還需要儲存多個狀態資訊。
儲存狀態資訊的方式:
閉包;將狀態資訊儲存到table內,將table作為迭代器的狀態常量。
示例(閉包):
function elemiterator(collection)
local index = 0
local count = #collection --獲取集合的元素個數
return function () --閉包函式;匿名函式,沒有引數。
index = index + 1
if index <= count
then
return collection[index]
endend
endarr =
for value in elemiterator(arr) do print(value) end
結果:依次輸出one, two, three。
說明:for迴圈執行前,elemiterator()先執行,返回閉包函式,作為迭代器函式;
for迴圈每次執行時,呼叫一次閉包函式。
ipairs和pairs和區別:
pairs: 迭代table,可以遍歷表中所有的key可以返回nil。
ipairs: 迭代陣列,不能返回nil,遇到nil則退出。
java學習筆記day5
面向過程 強調的是功能行為 物件導向 將功能封裝進物件,強調具備了功能的物件。面向過程 開啟冰箱 儲存進冰箱 關閉冰箱 物件導向 冰箱.開啟 冰箱.儲存 冰箱.關閉 物件導向 3個特徵 封裝 繼承 多型。找物件,建立物件,使用物件。維護物件的關係。類 描述。物件 實體。成員變數和區域性變數 作用範圍...
python學習筆記 day5
函式 返回值 描述 pow x,y x y 運算後的結果 sqrt x 返回 x 的平方根 abs x 返回數字的絕對值,如 abs 10 返回 10 fabs x 返回數字的絕對值,如 math.fabs 10 返回 10.0 ceil x 返回數字的上入整數,入 math.ceil 4.1 返回...
matlab cody學習筆記 day5
一些學習筆記 1 陣列的簡單賦值 例如 input n 5 output m is 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25 兩個迴圈的源 function m timestables n m ones n,n for i...