lua常用操作
3472 ワード
--- key
---@param tableTemp
---@param key
function ContainsKey(tableTemp, key)
if tableTemp == nil then
return false
end
for k, v in pairs(tableTemp) do
if k == key then
return true
end
end
return false
end
--- value
---@param tableTemp
---@param value
function ContainsValue(tableTemp, value)
if tableTemp == nil then
return false
end
for k, v in pairs(tableTemp) do
if v == value then
return true
end
end
return false
end
---
---@param tableTemp
---@param value
function ArrayContains(tableTemp, value)
if tableTemp == nil then
return false
end
for i=1,#tableTemp,1 do
if tableTemp[i] == value then
return true
end
end
return false
end
---@desc table , 1
---@param tableTemp table
---@return table , 1
function GetTableLength(tableTemp)
if type(tableTemp) ~= "table" then
print(" ")
return
end
local len = 0
for k, v in pairs(tableTemp) do
len = len + 1
end
return len
end
---@desc
---@param tableTemp table
---@param key
function RemoveByKey(tableTemp,key)
for k,v in pairs(tableTemp) do
if k == key then
tableTemp[k] = nil
end
end
end
---@desc Value ( )
---@param array
---@param value value
---@param removeadll
---@return
function RemoveByValue(array, value, removeadll)
-- deleteNum / ; i/max while
local deleteNum,i,max=0,1,#array
while i<=max do
if array[i] == value then
--
table.remove(array,i)
--
deleteNum = deleteNum+1
i = i-1
-- while
max = max-1
-- value
if not removeadll then break end
end
i= i+1
end
--
return deleteNum
end
Luaを用いた開発の過程でtableに対する処理は頻繁であるが,ここでtableを整理する.义齿removeという2つの関数の使い方と、使用中に注意しなければならない点!
table.insert(list, [pos, ]value)
表リストのpos位置に要素valueを挿入し、pos位置とpos位置の後ろにある要素を後ろに移動します.posはオプションパラメータで、デフォルト値は#list+1なのでtable.insert(list,value)は、要素valueをテーブルlistの末尾に挿入します.
local tbl = {1, 2, 3, 4, 5}
table.insert(tbl, 3, 666)
print(unpack(tbl))
-- 1 2 666 3 4 5
table.insert(tbl, 999)
print(unpack(tbl))
-- 1 2 666 3 4 5 999
table.remove(list[, pos])
テーブルリストのpos位置の要素を削除し、必要に応じてpos位置の後ろにある要素を前に移動して、削除された値を返します.posはオプションパラメータで、デフォルト値は#listなのでtable.remove(list)はテーブルlistの最後の要素を除去します!
local tbl = {1, 2, 3, 4, 5}
local ele = table.remove(tbl, 4)
print(ele)
print(unpack(tbl))
-- 4
-- 1 2 3 5
ele = table.remove(tbl)
print(ele)
print(unpack(tbl))
-- 5
-- 1 2 3
特に注意:forループで削除操作を行う場合は、後ろから前へ逆順に繰り返すべきで、前から後ろへ順番に繰り返すといくつかの項目が漏れてしまう可能性があります!
local tbl = {1, 2, 2, 3, 4, 5}
-- : pos 2 ,pos 3
for k, v in pairs(tbl) do
if v == 2 then
table.remove(tbl, k)
end
end
print(unpack(tbl))
-- 1 2 3 4 5
tbl = {1, 2, 2, 3, 4, 5}
-- : for
for i = #tbl, 1, -1 do
if tbl[i] == 2 then
table.remove(tbl, i)
end
end
print(unpack(tbl))
-- 1 3 4 5