表的创建方式
>a={} --> 创建空表
>a={1,2,3} --> 在创建时指定数据,这类数据可以通过a[0]的方式获取
>a={name="jack"} --> 创建key=value形式的数据,可以通过a.name 或a['name']的方式获取
> a.p = 1 --> 动态创建,等价于a['p'] = 1
混合创建
> m = '456'
> a={name='123', [m]=789, '10', 11} --> [m]这种形式是用m变量所指定的值来作为key
> a.name --> '123'
> a.m --> nil
> a['456'] -->789
> a[1] --> 10
> a[2] -->11
数组/列表
表的一个创建方式如下
a= {}
for i=1,10 do
a[i] = i^2
end
此处得到的为一个索引从1开始,到10的数组,需要注意,在lua
中,其默认的索引下标是从1开始的,例如
> m = {"a", "b"}
> m[0] --> nil
> m[1] -->"a"
> m[2] -->"b"
序列
序列指的是不含有nil
元素的表数据,例如{1,2,3,4}
属于序列,但{1,2,nil,3}
不属于序列,对于序列,可以使用#
符号获取其长度,例如
> a={1,2,3,4}
> #a -->4
> b={}
> b[1] = 'a'
> b[10]='b'
> #b --> 1 这是因为lua中对于存在空洞的表无法计算出准确的长度
遍历表
使用pairs
遍历键值对,遍历的顺序是随机的
t = {10, print, x=12, k='h1'}
for k,v in pairs(t) do
print(k,v)
end
输出
1 10
x 12
2 function: 0x41b010
k h1
使用ipairs
遍历列表,结果将是有序的,但此方式无法得到key:value
形式的数据
t = {10, print, x=12, k='h1'}
for k,v in ipairs(t) do
print(k,v)
end
输出
1 10
2 function: 0x41b010
使用for
循环编列
t = {10, print, x=12, k='h1'}
for i=1,#t do
print(i, t[i])
end
输出
1 10
2 function: 0x41b010
网友评论