为什么 Lua 数组(表)从 1 开始而不是从 0 开始?


是的,Lua 中的数组以索引 1 作为第一个索引开始,而不是像大多数编程语言那样以索引 0 开始。

示例

请考虑以下示例:

 在线演示

arr = {10,11,12,13,14}
print(arr[0])
print(arr[1])

在上面的示例中,我们正在打印索引 0 和 1 处的值,默认情况下,索引 0 处的值为 nil,因为在 Lua 中,数组从 1 开始索引,而不是 0。

输出

nil
10

所以,现在我们知道数组是基于 1 索引的,而不是基于 0 索引的。但是,等等,为什么是 1 索引和 0 索引?

实际上,关于哪种方法更好以及为什么更好,在选择基于 0 索引的数组或基于 1 索引的数组时,已经进行了多次辩论,但没有明确的答案。

Lua 中的数组基于 1 索引的主要原因是,语言 **Lua** 本身受到名为 **Sol** 的语言的启发,该语言是为没有接受过任何编程语言或任何计算机科学领域正式培训的石油工程师设计的。因此,那些没有任何编程语言的先前知识或如何存储数据的现实知识的人,通常难以理解从 0 开始索引背后的逻辑,因此 Lua 开发人员认为从 1 开始索引可能是一个更好的主意,这将使这种情况变得无关紧要,并且对于编程新手来说更容易上手 Lua,而不会遇到任何重大问题。

此外,Lua 提供了许多非常合适的方法,可以帮助任何使用 Lua 的开发人员避免 0 索引和 1 索引之间的混淆,因为这些方法甚至不需要索引。其中一些方法是 **通用 for** 循环或 **ipairs 运算符**。

更新于: 2021 年 7 月 19 日

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告