s = { 1, 2, 3, 4, 5, 6 }
print(#s)     -- output: 6
s[4] = nil
print(#s)     -- output: 6
s[7] = nil
print(#s)     -- output: 3
s[4] = 4
print(#s)     -- output: 6
s[4] = nil
print(#s)     -- output: 3

print()

s = { "1", "2", "3", "4", "5", "6" }
print(#s) – output: 6
s["4"] = nil
print(#s) – output: 6
s["7"] = nil
print(#s) – output: 6
s["4"] = "4"
print(#s) – output: 6
s["4"] = nil
print(#s) – output: 6

Lua 5.3.4

输出就是这么匪夷所思,所以, 不要在Lua的table中使用nil值,如果一个元素要删除,直接remove