首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Lua表构造函数中的初始化顺序

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

Stack Overflow用户
提问于 2017-02-16 00:55:25
回答 1查看 249关注 0票数 1

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

代码语言:javascript
运行
复制
a = {[1]=1, [2]=2, 3}
print(a[1]) -- 3
a = {1, [2]=2, [1]=3}
print(a[1]) -- 1

索引1是否总是与第一个类似列表的条目相关联,2总是与第二个条目相关联,以此类推?还有别的什么吗?

EN

Stack Overflow用户

发布于 2017-02-16 07:39:19

在Lua中有两种类型的表,数组dictionaries,这就是你所说的“列表”和“记录”。一个数组,包含有顺序的值,这给了你一些好处,比如更快的迭代或插入/移除值。字典就像一个巨大的查找表,它没有顺序,它的优点是你可以使用任何值作为键,并且你不受限制。

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

您要做的是在表的初始构造过程中定义相同的键两次。这通常是不切实际的,因此在语言的开发过程中并没有真正投入任何认真的想法。这意味着所发生的本质上是未指定的行为。目前还不能完全理解这将产生什么影响,并且在不同的平台或实现之间可能不一致。

因此,您不应该在任何商业项目中使用它,也不应该在您将与他人共享的任何代码中使用它。如果有疑问,可以构造一个空表,然后定义键值对。

票数 -1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42255535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档