Lua中键值冲突与数组索引

我是一个Lua的新手。最近我了解了Lua中的Table

在我看来(不确定是否正确),Table既可以用作数组又可以用作Map。当用作Map时,没有键的值会自动获得顺序索引。

t1 = {"a", "b"}
t2 = {"a", [2] = "b"}

对于t1和t2,都有tX[1] == "a"和tX[2] == "b",其中X为1或2。

如果自动分配的索引和命名键冲突的情况下,会让人感到困惑,这时候就是

t3 = {"a", [1] = "b"}

在这种情况下,t3[1] == "a",t3[2] == nil, 而且没有警告或错误出现。

我猜想"b"可能会把"a"在索引1上覆盖,但事实并非如此。 那么在这种情况下的原则是什么呢?

Lua保持了TABLE结构的灵活性。虽然这使Table具有更多的可能性和能力,但也涉及到一些混淆。这种设计的主要概念是什么呢?

点赞
用户4567755
用户4567755

参考参考手册:3.4.9 - 表构造器;您可能感兴趣的是:

形式为 exp 的字段等同于 [i] = exp,其中 i 从 1 开始为连续整数;其他格式的字段不影响此计数。

以及:

构造函数中分配的顺序是未定义的。(仅当存在重复的键时,该顺序才相关。)

2020-09-09 14:26:48