【发布时间】:2020-12-27 22:56:50
【问题描述】:
我是新手二lua。最近学习了lua中的Table。
在我看来(我不确定是否正确), table 可以用作 Array 也可以用作 Map。当用作 Map 时,没有键的值会自动获取序数索引。
t1 = {"a", "b"}
t2 = {"a", [2] = "b"}
tX[1] == "a" 和 tX[2] == "b" 对 t1 和 t2 都是正确的,其中 X 是 1 或 2。
当自动分配的索引和命名键发生冲突时会让人感到困惑,这是
t3 = {"a", [1] = "b"}
在这种情况下 t3[1] == "a" 和 t3[2] == nil。并且没有出现警告或错误。
我猜“b”可能会覆盖索引 1 中的“a”,但事实并非如此。 那么这种情况的原理是什么?
Lua 保持了 TABLE 结构的灵活性。尽管这为 table 提供了更多的可能性和能力,但它也带来了一些混乱。 这种设计的主要概念是什么?
【问题讨论】:
-
键冲突时的行为取决于实现,没有任何保证。
标签: lua