Lua教程

Lua极简入门——类型(三)table

2019-10-20  本文已影响0人  李小磊_0867

table实现了关联数组,是一种具有特殊索引方式的数组。其具体特点以及使用特性如下。

a = {}
a[1] = 12
a[2] = "hello"
a["name"] = "lua"
a = {}
a[1] = 12
a[2] = "hello"
b = {1,2,3}
b[4] = 4
a = {}
a[1] = 12
a[2] = "hello"
b = a
for i, v in pairs(b) do
    print(v)
end
-->> 12
-->> hello
for i, v in pairs(a) do
    print(v)
end
-->> 12
-->> hello
a = {"lua"}     -- 重新定义table,变量a指向新table,老的table并不受到影响
for i, v in pairs(b) do
    print(v)
end
-->> 12
-->> hello
for i, v in pairs(a) do
    print(v)
end
-->> lua
a = {}
a["x"]  = 10
print(a["x"])
-->> 10
print(a.x)
-->> 10

上述的两种使用方式是等价的。但这里也会有些让人迷惑的地方,a.x表示a["x"],而a[x]对于x为变量,可能表达的是别的字符

a = {}
x = "name"
a[x] = "lua"
print(a.x)  -- 对于a["x"]是不存在
-->> nil
print(a[x])
-->> lua
print(a.name)
-->> lua
a = {"a", "b", "c"}
print(a[1])
-->> a
print(a[2])
-->> b
print(a[3])
-->> c

虽然下标是从1开始,但0位置仍然可用,只是无法按照数组长度正确计算

a = {"a", "b", "c"}
a[0] = "0"
print(#a)   -- 此时虽然数组中有四个元素,计算长度,仍然是从1开始
-->> 3
print(a[0])
-->> 0
-- 遍历数组
for i, v in pairs(a) do
    print(i, v)
end
-->> 1  a
-->> 2  b
-->> 3  c
-->> 0  0
t={}
t["x"] = "b"
print(#t)
-->> 1
t = {}
t[10] = 123
print(#t)
-->> 0
上一篇 下一篇

猜你喜欢

热点阅读