我可以强迫Lua的表索引从零开始吗?

Eon*_*nil 13 indexing lua

我读过关于Lua的文章,它几乎是完美的语言,但是存在严重错误.它是基于单一的索引.我还读到它有一个在索引0处设置值的功能,但它没有计算表长度,字符串操作仍然是基于一个.所以这个功能毫无意义.

我不想基于单一或零基础的火焰.我只想问是否有强制使用从零开始索引的功能.

12M*_*e21 6

使用 0 索引数组实际上非常简单:

local array={
[0]="zero",
    "one",
    "two"
}

for i=0,#array do
    print(array[i])
end
Run Code Online (Sandbox Code Playgroud)

您可以在#array不减去 1 的情况下使用,因为长度运算符实际上返回最高索引(技术上,第一个 nil 之前的键),而不是实际的“长度”(这在 Lua 中无论如何都没有意义)。

对于字符串运算符,您可能只需要创建重复的函数(尽管可能有更好的方法)

ipairs()也仅支持 1 个索引,因此您必须定义自己的函数或仅使用常规函数for


gwe*_*ell 2

我认为 Lua 已经具备了使其基于 0 所需的功能。不幸的是,我所指的功能是 Lua 的开源许可证。

我无法找到 Lua 的补丁或分支来改变该语言基于 1 的性质。

不幸的是,分叉 Lua 将其更改为基于 0 也会破坏向后兼容性。失去所有当前附加模块可能会为易用性付出巨大的代价。