lua之table学习

够着是用于创建和初始化table的表达式,这是lua特有的一种表达,并且也是lua种最有用的,最通用的机制之一。它也有点类似有C/C++中enum,可以定义常量。

 我们先看下例子吧:

_type = {
	red_color = "red",
	bule_color = "red",
	white_color = "red",
	{x = 1, y = 2},
	{x = 3, y = 4},
	{x = 5, y = 6},
}

print(_type.red_color);
print(_type["red_color"]);
print(_type[1].x);
print(_type[2].x);
print(_type[3].x);

_type中定义了3个普通数据成员,后的三个成员table嵌套进去,作为_type的数据成员。

我们通常访问前3个成员,有两种方式:

print(_type.red_color);
print(_type["red_color"]);

后面由于是作为了一个嵌套的table,我们如需要访问它们的话,我们只需要当做数组来访问得到某一个数据成员,把它看做是一个普通的tabl,然后可以像普通table一样访问它的数据成员了。

这两种风格的构造是各有其限制,例如,不能使用负数的索引,也不能用运算符作为记录的字段名,为了满足这些要求,Lua还提供了一种更通用的格式,这种格式允许在方括号之间显示地用一个表达式来初始化索引值

opnames = {
	["+"] = "add",
	["-"] = "sub",
	["*"] = "mul",
	["/"] = "div",
	"-",
	"-1",
}

i = 20
s = "-"

a = {
	[i + 0] = s,
	[i + 1] = s .. s,
	[i + 2] = s .. s .. s,
}

print(opnames[s])
print(a[22])
print(opnames[2]) --》-1

语法看似繁琐了一点,但是很灵活。

构造式:

{x = 0. y = 0} 等价于{["x"] = 0, ["y" = 0]}

{"r", "g", "b"}等价于[[1] = "r", [2] = "g", [3] = "b"}

在Lua中构造式的索引下标都是以1为起始索引下标,不推荐以索引下标0为开始数组,大多数内建函数都假设数组起始于索引1,若遇到以索引0开始的数组,它们就无法正确地处理了。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值