【Lua基础学习】---table表

强大的 table 表

table 是一个"关联数组"。 
    在 Lua 中可以用任意类型的值来作为数组的索引,但是这个值不能是 nil,同样也可以
    用任意类型的值作为数组的value,nil也可以。

        1、数组的索引可以是数字或者是字符串,所有索引值都需要用 "["和"]" 括起来;
            如果是字符串还可以去掉引号和中括号;但是数字下标不可以。**注意**

        2、table 所有元素之间用逗号 "," 隔开;

        3、table 的默认初始索引以 1 开始,如果不写索引,则索引就会被认为是数字,
            并按顺序自动从 1 往后编。

        4、table 长度是不固定的,有新数据插入时会自动增长。

        5、table 可以保存任何类型数据,包括nil、函数、table。

        6、table 的变量只是一个地址引用, 对 table 的操作不会产生数据影响。

上代码:

--table 的值有两种存储方式:1、数组方式、 2、键值对方式
tab1 = {
    key1 = "12",
    ["key2"] = 21,
    [12] = "tab1索引12",
    tab2 = {key1 = "value1",[12] = "tab2索引12"},
    keyFunction = function() print("函数") end
    31
}
print(tab1.key1)---------------12
print(tab1.key2)---------------21
print(tab1[12])----------------tab1索引12
print(tab1.tab2.key1)----------value1
print(tab1.tab2[12])-----------tab2索引12
tab1.keyFunction()-------------函数
tab1["keyFunction"]()----------函数
print(tab1[1])-----------------31

获取 table表 值:
— 如果下标不是数字, 可以使用 table.key 的形式访问,也可以 table[“key”] 形式访问

— 如果下标是数字, 只能使用 table[索引值]形式进行访问、

— lua 中 如果不指定 table 索引默认索引从 1 开始,在 tab1 中 13 没有显式对应的 key,
而在前面都定义了对应的key,因此索引从1开始

— 不管定义索引时用的是常量还是变量, 最终 table 中 value 的索引 key 是常量,
不会随变量的改变而变化 value 的 key。

遍历 table

迭代器遍历 table:

    1、
            for k,v in ipairs(表名) do
                print(k,v)
            end
    ipairs 方法,遍历数组结构
    pairs 方法,遍历键值对结构
tab1 = {2,23,12,3,21,23}
for k,v in ipairs(tab1) do
    print(k,v)
end
--运行结果:
1   2
2   23
3   12
4   3
5   21
6   23

tab1 = {key1 = "value1", key2 = "value2", key3 = "value3"}
for k,v in pairs(tab1) do
    print(k,v)
end
--运行结果:
key1    value1
key3    value3
key2    value2

你可能感兴趣的:(Lua基础知识)