本文讲解了 Lua 中长度运算符(#)的一些知识
(注: 以下讨论基于 Lua 5.3.5 版本)
基础
Lua 中的长度运算符(#)可以用于获取 table 的"长度",举个简单的例子:
local...local t = { 1, 1, 1, nil }
print(#t) -- 3
在实际开发中,也并不建议在用作序列的 table 中插入空元素(nil),所以一般来讲,能够在用作序列的 table 上正确使用长度运算符...但实际上,程序的输出为 2:
local t = { 1, 1, nil, 1, 1, nil }
print(#t) -- 2
原因在于当 Lua 发现 table 最大数组索引处的元素为空时,是按二分法的方式向前查找的...高级
如果混合使用 table 中的 数组部分 和 hash部分,则长度运算符(#)的结果会更加复杂一些:
local t = { 1, 1, 1, 1, [5] = 1, [9] = 1 }
print...当 Lua 发现 table 的最大数组索引处不为空元素时,其会继续在 table 的 hash部分 寻找,继而导致上面的输出为 5:
local t = { 1, 1, 1, 1, [5] = 1,