table就是Lua语言提供的数组,但是不同于Java、C++等语言,Lua table不仅是数组,还可以是Java语言中的Map,也就是table也可以存储键值对。这一点和PHP语言相似,Lua中的数组也当作键值对来处理,数组元素的键是数字。因为把 Lua 中的 table 叫作表更合适。
table 的定义
table用花括号来定义,元素用逗号隔开,最后一个元素后可以加逗号,也可以不加。table的键和值都可以是任意类型(注意,键也可以是任意类型)。
-- 定义空table
local empty_table = {}
-- 定义一个字符串数组
local array = {'daemon', 'coder'}
-- 数组元素也可以多种类型混合
local mix_array = {'Nice', 666}
-- 元素是数组的数组,可以用这种方式定义多维数组。
local matrix = {
{11, 12, 13, 14},
{21, 22, 23, 24},
{31, 32, 33, 34, 35, 36},
}
定义一个键值对形式的数组,键和值用等号隔开,等号左侧是键,右侧是值。注意字符串形式的key不需要像字符串定义一样用引号:
local map = {name = 'DaemonCoder', url = 'daemoncoder.com'}
--[[
下面这样定义会有语法错误:
local map = {'name' = 'DaemonCoder', 'url' = 'daemoncoder.com'}
]]
如果不得不用引号包起来时(比如字符串中包含了等号等特殊符号),把键用方括号括起来,同时键值也要用字符串的定义格式加引号。
local m