• 定义表(table)的方式

a={},b={…}

  • 访问表的成员

通过"."或者"[]"运算符来访问表的成员  (注意:表达式a.b等价于a["b"],但不等价于a[b])

  • 表项的键和值

任何类型的变量,除了nil,都可以作为表项的键.从简单的数值,字符串,到复杂的函数,表等等都可以;同样,任何类型的变量除了nil,都可以作为表项的值.给一个表项的值赋nil,则把表a中键为"b"的项删除.如果访问一个不存在的表项,其值也是nil,比如有c=a.b,但表a中没有为"b"的项,则c等于nil.

一段程序:

a={}
b={x=1,["hello,"]="world!"}
a.astring="ni,hao!"
a[1]=100
a["a table"]=b

function foo()
end
function bar()
end
a[foo]=bar

--分别穷举表a和b
for k,v in pairs(a) do
    print(k,"=>",v)
end
print("----------------------")
for k, v in pairs(b) do
    print(k,"=>",v)
end

输出结果:

>lua -e "io.stdout:setvbuf 'no'" "2.lua"
1 => 100
a table => table: 0066CE38
astring => ni,hao!
function: 0066B778 => function: 0066B798
----------------------
hello, => world!
x => 1
>Exit code: 0

原文地址:https://www.cnblogs.com/liwenbin/p/2681931.html