将nil附加到Lua序列

Nic*_* M. 4 lua lua-table

假设我有一个序列:

a = { 10, 12, 13 }
Run Code Online (Sandbox Code Playgroud)

#a序列的长度()为3.

现在,假设我执行以下操作:

table.insert(a, nil)
Run Code Online (Sandbox Code Playgroud)

(或a[#a+1] = nil.)

这会以任何方式影响桌面吗?

这个问题的答案是决定性的,还是这种"未定义的行为"?

在Luas上我检查过(Lua 5.1,Lua 5.3)这不会影响表格.但我想知道这是否是我不能依赖的"未定义行为".

该手册仅讨论在序列nil中间添加一个,但它没有(根据我的解释)谈论将它添加到序列的末尾.

Yu *_*Hao 5

nil序列添加值根本不起作用.实际上,一个表不能保持一个值nil.从手册:

表可以是异构的; 也就是说,它们可以包含所有类型的值(除外nil).任何具有值的键nil都不被视为表的一部分.相反,任何不属于表的键都具有关联值nil.

因此,表{ 10, 12, 13, nil}相当于{ 10, 12, 13 }两个都是序列.

类似地,一个非序列示例:一个表{10, 20, nil, 40}等价于{[1] = 10, [2] = 20, [3] = nil, [4] = 40}{[1] = 10, [2] = 20, [4] = 40}