多维数组
arr = {{},{},{}}
for i=1,3 do
for j=1,2 do
arr[i][j] = i+j
end
end
- 需要先构建空的数组,之后再赋值或遍历
ipairs和pairs的区别
array = {"Lua","C#","Java"}
array[2] = nil
for k,v in pairs(array) do
print(k,v)
end
for k,v in ipairs(array) do
print(k,v)
end
区别:
- ipairs 遇到中间为空时就停止遍历,pairs会继续遍历完
自定义迭代函数
function iter (a, i)
i = i + 1
local v = a[i]
if v then
return i, v
end
end
function ipairs (a)
return iter, a, 0
end
arr = {3,5,1,2}
for k,v in ipairs(arr) do
print(k,v)
end
- 三个参数,迭代函数,状态变量和控制变量
table的定义和基本使用
mytable = {}
mytable[1] = "lua"
--将单独一个键销毁
mytable[1] = nil
--将整个表销毁,相当于垃圾回收
mytable = nil
mytable = {}
print(type(mytable))
mytable[1] = "lua"
mytable["name"] = "skil"
--相当于python种的引用赋值
newtable = mytable
print(newtable[1])
print(mytable[1])
newtable[1] = "C#"
print(newtable[1])
print(mytable[1])
--单独置空一个变量,不会销毁值,相当于引用计数吧,计数为0才销毁
mytable = nil
print(newtable.name)
--当都为空的时候才会没有name
newtable=nil
table 拼接插入删除
mytable = {"Lua","C#","Java","C++","C"}
--concat拼接表中元素,第二个位置指定符号拼接,第三和第四个位置为指定开始位置和结束位置
print(table.concat(mytable))
print(table.concat(mytable,","))
print(table.concat(mytable,' ',2,4))
mytable[#mytable+1] = "PHP" --通过计算长度来取到最后一个值
print(mytable[#mytable])
table.insert(mytable,"Python") --insert默认插在最后
table.insert(mytable,2,"BOO") --第二个参数为指定插入的位置
print(mytable[#mytable])
mytable[2] = nil
print(mytable[2]) -- 会直接打印空
table.remove(mytable,2) --删除完之后,其他元素会向前移动
print(mytable[2])
- table.concat(表,”拼接符号“,”起始位置“,”结束位置“)
- table.insert(表,”插入位置“,“插入的值”)
- table.remove(表,删除的位置)
table排序和取最大值
mytable = {2,3,4,55,3,21,21,3,1,1,541,32,3,51,432,3,332}
print("排序前")
for k,v in pairs(mytable) do
print(k,v)
end
table.sort(mytable)
print("排序后")
for k,v in pairs(mytable) do
print(k,v)
end
function max_number( tab )
-- body
max = 0
for k,v in ipairs(tab) do
if v>max then
max =v
end
end
return max
end
--function max_number( tab )
-- body
--table.sort(tab)
--return tab[#tab]
--end
print(max_number(mytable))
- table.sort(表) 进行排序
- 取最大值,自定义函数