一、一维数组
a = {1,2,3, x = 5, y = 7, 9, nil, 10, m = 11}
a[10] = 12
a.m = "a.m"
a["n"] = "a[n]"
len = table.maxn(a)
print("len = " .. len)
for i = 1, len do
print(a[i])
end
print("a.x = " .. a.x)
print("a[\"y\"] = " .. a["y"])
print("a.m = " .. a.m)
print("a.n = " .. a.n)
可以看到数组里可以存放各种类型的值,也可以存放键-值对,由于之前计算长度的“#”运算符对于数组结尾是nil的情况会特殊处理,这里用
len = table.maxn(a)
计算数组长度,可以看到这里计算出来的数组长度不包括键-值对的个数。
另外键-值对的表示方法可以是:
tablename.key键
或者
tablename["key键"] //注意这里要加引号,不同于其他语言
输出结果:
Lua中的数组下标是从1开始的,如果想从0开始可以这么写:
a = {[0] = 1,2,3, x = 5, y = 7, 9, nil, 10, m = 11}
特殊字符也可以作为键值,只不过只能通过tablename[“key键”] 方式进行访问
b = {["+"] = "a", ["-"] = "b"}
print(b["+"])
二、二维数组
a = {{1, 2, 3}, {"aa", "bb", "cc"}}
a[3] = {"赵", "钱", "孙", "李"}
len = table.maxn(a);
for i = 1, len do
innerlen = table.maxn(a[i])
for j = 1, innerlen do
print(a[i][j])
end
end
输出结果:
说白了二维数组就是数组嵌套,也可以有多维数组,都是一样的道理。