lua table填充数据方式差异

第一种使用方式

local callbackTable={{m_callback="a"},nil,{m_callback="c"}}

长度为 3,nil占了一个位置。

table.remove(callbackTable,2) 可以删除 nil,然后后续数据前移。

第二种使用方式

local callbackTable={}
table.insert(callbackTable,{m_callback="a"})
table.insert(callbackTable,nil)
table.insert(callbackTable,{m_callback="c"})

长度为2,table.insert(callbackTable,nil) 没有插入数据,nil没有占位置。

 


第一种使用方式

local callbackTable={{m_callback="a"},{m_callback="b"},{m_callback="c"}}

callbackTable[2]=nil
for key,value in pairs(callbackTable) do
	print(tostring(key) .. "," .. tostring(value) .. tostring(value.m_callback))
end

table.remove(callbackTable,2)
for key,value in pairs(callbackTable) do
	print(tostring(key) .. "," .. tostring(value) .. tostring(value.m_callback))
end

这段代码可以得到正确结果。

1,table: 006FECD0a
3,table: 006FEE10c
1,table: 006FECD0a
2,table: 006FEE10c

 

第二种使用方式

local callbackTable={}
table.insert(callbackTable,{m_callback="a"})
table.insert(callbackTable,{m_callback="b"})
table.insert(callbackTable,{m_callback="c"})

callbackTable[2]=nil
for key,value in pairs(callbackTable) do
	print(tostring(key) .. "," .. tostring(value) .. tostring(value.m_callback))
end

table.remove(callbackTable,2)
for key,value in pairs(callbackTable) do
	print(tostring(key) .. "," .. tostring(value) .. tostring(value.m_callback))
end

得不到正确的结果

1,table: 0055ECD0a
3,table: 0055EE60c
1,table: 0055ECD0a
3,table: 0055EE60c

 

你可能感兴趣的:(Lua)