-- 初始化表
tbl = {} -- 不可以是 tbl = nil-- 赋值
-- table 赋值有以下两种(其中1是记录(record)风格,2是列表(list)风格)
local tbl ={t1 = 1,t2 = 2,3,4,-- ["t3"] = 5, [3] = 6-- ["1"] = 7, -- 不要这样去写
}-- 访问
print(tbl.t1) -- 1 record 风格访问
print(tbl[1]) -- 3 list 风格访问
pairs 优先按顺序输出没有(默认)key的值,无序输出字母类型key或者数字类型key的键值,遇到nil不输出,但不会停止遍历
ipairs 从第一个索引 key = 1 开始,依次输出所有的 key+1 的键值,遇到字母下标并不会结束遍历,只是不输出而已,如果遇到nil则退出;
tbl = {["val1"] = "val1", 1, 2 , 3, nil, [5] = 5, [7] = 7, 6} -- tbl[5] = 6
print("-----------ipairs----------------")
for k,v in ipairs(tbl) doprint(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(tbl) doprint(k,v)
end
输出:
-----------ipairs----------------
1 1
2 2
3 3
-----------pairs----------------
1 1
2 2
3 3
5 6
7 7
val1 val1
function iter (a, i)i = i + 1local v = a[i]if v thenreturn i, vend
endfunction ipairs (a)return iter, a, 0
end
# 最好只用来获取数组类型(都是默认 key 值)的 table 长度
# 获取的 table 长度可能不准确
local tblTest1 ={1, a = 2, 3,}
print(table.getn(tblTest1)) -- 2
function getLength(tbl)local len = 0for k,v in pairs(t) dolen = len + 1endreturn len
end
tbl = {2, 3, 4, 5}
tbl[2] = nil
print(#t) --this will output 4
print(length(t)) --this will output 3, because tbl[2] was deleted