Lua5.1中unpack函数为何无法正确解析非连续索引表?
Lua 5.1中unpack函数的行为误区
- 你忽略了Lua 5.1里
unpack函数的核心遍历规则:它默认从表的索引1开始依次取值,一旦遇到第一个nil就停止返回,不会继续扫描后续的非nil元素。 - 你的表
t中t[1]和t[2]都是nil,所以unpack(t)只会返回一个nil,把这个结果赋值给三个变量时,三个变量自然全是nil。而直接通过t[1]、t[2]、t[3]访问是精准定位索引,所以t[3]能正确拿到值。 - 如果想让
unpack遍历到索引3,需要手动指定起始和结束索引:
这样赋值后,local a, b, c = unpack(t, 1, 3)a和b是nil,c会正确得到"continent"。
内容的提问来源于stack exchange,提问作者dodecaplex
相关产品推荐
相关产品推荐

