Lua表构造函数中的初始化顺序

时间:2017-02-15 16:55:25

标签: lua lua-table

因此,表构造函数有两个组件,类似于列表和类似记录。类似列表的条目总是优先于类似记录的条目吗?我的意思是,考虑以下情况:

a = {[1]=1, [2]=2, 3}
print(a[1]) -- 3
a = {1, [2]=2, [1]=3}
print(a[1]) -- 1

索引1是否始终与第一个类似列表的条目相关联,2与第二个类似,依此类推?或者还有其他什么?

1 个答案:

答案 0 :(得分:0)

Lua中有两种类型的表,数组词典,这些是您所说的"列表"和"记录"。 数组包含顺序中的值,这为您提供了一些优势,例如更快的迭代或插入/移除值。 Dictionaries 就像一个巨大的查找表,它没有订单,它的优点是如何使用任何值作为键,而且你不受限制。

构造表时,您有2种语法,可以用逗号分隔值,例如: {2,4,6,8}从而使用键1到n创建数组,或者您可以定义键值对,例如{[1]=2,[58]=4,[368]=6,[48983]=8}创建字典,您经常可以混合使用这些语法,但您不会遇到任何问题, 不是这种情况>你的场景。

您正在做的是在表格初始构建期间两次定义相同的密钥。这通常是不切实际的,因此在语言的发展过程中并没有真正有任何认真的想法。这意味着所发生的事情基本上是未指明的行为。目前还不完全了解它会产生什么影响,并且可能在不同的平台或实现中不一致。

因此,您不应在任何商业项目或您与其他人共享的任何代码中使用此项。如有疑问,请构造一个空表并在之后定义键值对。