--table 是lua的一種數據結構用來幫助我們創建不同的數據類型。如:數組和字典
--lua table 使用關聯型數組,你可以用任意類型的值來做數組的索引,但這個值不能是nil
--lua table 是不固定大小的,你可以根據自己需要進行擴容
一、lua 的table 表存的數據類型
這個 table 表 強大,可以存放好多種數據類型
tab1 = {1, 2 ,3} -- 類似數組 tab2 = {"a", "b", "c"} -- 類似數組 tab3 = {["a"]="aa", ["b"]="bb"} -- 鍵值對
1. 存函數 tb = {} tb.func = function () print("hanshu") end print(tb.func()) 2. 判斷一個table的元素是否是另一個table的元素(關於函數) tab={}
tab.a=function () print(1) return 1 end
tab.b=function () print(2) return 1 end
tab.c=function () print(3) return 1 end local zhi={"a","c"} for key,value in pairs(zhi) do print(key,value) for key ,func in pairs(tab) do if value == func then func() print("ok") end end end
輸出結果:
1 a 2 c
3. 判斷有沒有函數 tab={}
function a() print(1) return 1 end
function b() print(2) return 1 end
function c() print(3) return 1 end local tab={["a"]=a, ["b"]=b, ["c"]=c} local zhi={"a","c"} for key,value in pairs(zhi) do print(key,value) if tab[value]() then print("ok") end end
輸出結果:
1 a 1 ok 2 c 3 ok
2、lua 的table的 遍歷
pairs遍歷表中全部key,value.
ipairs從下標為1開始遍歷,然后下標累加1,如果某個下標元素不存在就終止遍歷。這就導致如果下標不連續或者不是從1開始的表就會中斷或者遍歷不到元素。
local tt ={[1] = "test3",[4] = "test4",[5] = "test5"} for i,v in pairs(tt) do -- 輸出 "test4" "test3" "test5" print( tt[i] ) end for i,v in ipairs(tt) do -- 輸出 "test3" k=2時斷開 print( tt[i] ) end ---------------------------------------------------- tbl = {"alpha", "beta", [3] = "uno", ["two"] = "dos"} for i,v in ipairs(tbl) do --輸出前三個 print( tbl[i] ) end for i,v in pairs(tbl) do --全部輸出 print( tbl[i] ) end