Lua tableノート
1827 ワード
私がluaを使っている間のメモを記録します.
デフォルトkeyは数値の増加です
local tb={"A",[3]="C","B"}このtbは下付き1,2,3で印刷されます:ABC
ipairsとpair
ipairのキーは1からnまで順番にあり、nilに出会って遍歴を終了し、pairは順番がなく、tableを完全に遍歴する.
説明:
ipairはkey=1から累積を開始し,valがnilであるとループを終了する.
pair出力の結果はtable定義の順序と一致する(非配列は宣言の順序と一致することを保証しない).
table.insert
文法:table.Insert(挿入するtable、挿入するデータ)
next
next(table[,index])解釈:プログラムがテーブルtableのすべてのフィールドを遍歴できるようにする.彼の最初のパラメータはテーブルで、2番目のパラメータはテーブル内の有効なインデックスです.関数は、指定したインデックスの次のインデックスとインデックスの位置に対するテーブルの値を返します.2番目のパラメータをnil呼び出し関数に設定すると、テーブルの最初のインデックスとインデックスの位置の値が返されます.テーブルの最後のインデックスを使用するか、空のテーブルでnilをインデックスに使用すると、関数はnilを返します.2番目のパラメータを省略すると、デフォルトではnilと解釈されます.特にnext(t)の形式を使用して、テーブルが空であるかどうかを検出することができます.
例:
sortソート
最初のパラメータを2番目のパラメータの前に並べたい場合は、trueを返します.提供されていない場合、sortはデフォルトの
例:受領可能なものは前に並べ、その他は時間順に並べ替えます.
table要素の削除
for(遍歴)tableを使用する場合、このtableの要素を削除しないでください
正しい方法は、削除するデータをtableにキャッシュして削除することです.
例:
デフォルトkeyは数値の増加です
local tb={"A",[3]="C","B"}このtbは下付き1,2,3で印刷されます:ABC
ipairsとpair
ipairのキーは1からnまで順番にあり、nilに出会って遍歴を終了し、pairは順番がなく、tableを完全に遍歴する.
説明:
ipairはkey=1から累積を開始し,valがnilであるとループを終了する.
pair出力の結果はtable定義の順序と一致する(非配列は宣言の順序と一致することを保証しない).
table.insert
文法:table.Insert(挿入するtable、挿入するデータ)
next
next(table[,index])解釈:プログラムがテーブルtableのすべてのフィールドを遍歴できるようにする.彼の最初のパラメータはテーブルで、2番目のパラメータはテーブル内の有効なインデックスです.関数は、指定したインデックスの次のインデックスとインデックスの位置に対するテーブルの値を返します.2番目のパラメータをnil呼び出し関数に設定すると、テーブルの最初のインデックスとインデックスの位置の値が返されます.テーブルの最後のインデックスを使用するか、空のテーブルでnilをインデックスに使用すると、関数はnilを返します.2番目のパラメータを省略すると、デフォルトではnilと解釈されます.特にnext(t)の形式を使用して、テーブルが空であるかどうかを検出することができます.
例:
if next(self.data) then
local item = self.data[1]
else
warn(" ")
end
sortソート
最初のパラメータを2番目のパラメータの前に並べたい場合は、trueを返します.提供されていない場合、sortはデフォルトの
例:受領可能なものは前に並べ、その他は時間順に並べ替えます.
---NOTE vo1 vo2 true
table.sort(self.data, function(vo1, vo2)
if not canRecv(vo1) and not canRecv(vo2) then
---
return vo1.initTime < vo2.initTime
end
if canRecv(vo1) and not canRecv(vo2) then
return true
end
--- vo2 vo1 , false
if canRecv(vo2) and not canRecv(vo1) then
return false
end
end)
table要素の削除
for(遍歴)tableを使用する場合、このtableの要素を削除しないでください
正しい方法は、削除するデータをtableにキャッシュして削除することです.
例:
function DropItemModel:DemoRemoveItem()
local tmpTb = {}
for k, v in pairs(self.dropItems) do
local dropModel = DataCenter.models[v]
if v and dropModel then
table.insert(tmpTb, k)
end
end
---
for i = 1, #tmpTb do
self.dropItems[tmpTb[i]] = nil
end
end