首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua解包bug?

Lua解包bug?
EN

Stack Overflow用户
提问于 2009-11-04 18:39:41
回答 1查看 3.5K关注 0票数 11

我在Lua解包函数中偶然发现了一个奇怪的行为

代码语言:javascript
复制
table1 = {true, nil, true, false, nil, true, nil}
table2 = {true, false, nil, false, nil, true, nil}

a1,b1,c1,d1,e1,f1,g1 = unpack( table1 )
print ("table1:",a1,b1,c1,d1,e1,f1,g1)

a2,b2,c2,d2,e2,f2,g2 = unpack( table2 )
print ("table2:",a2,b2,c2,d2,e2,f2,g2)

输出:

代码语言:javascript
复制
table1: true    nil true    false   nil nil nil
table2: true    false   nil nil nil nil nil

第二次解包传递的参数最多为第一个nil值。我可以接受这个事实。第一个表提供了4?参数,其中一个在中间为零。它有4个参数不是nil,但它们不是显示的参数。

有人能解释一下这个吗?这是在codepad.org和Lua5.1上尝试过的

EN

回答 1

Stack Overflow用户

发布于 2009-11-04 18:59:49

2.2 - Values and Types

...类型实现了关联数组,即不仅可以用数字索引的数组,而且可以用任何值(nil除外)索引的数组。表可以是异构的;也就是说,可以包含所有类型的值(nil除外)。..。

给定一个条目的nil将破坏表的枚举,并且您的变量将不能正确初始化。

下面是一个简单的示例,它演示了一个有问题的行为:

代码语言:javascript
复制
table1 = {true, false, nil, false, nil, true, nil}
for k,v in ipairs(table1) do
  print(k, v)
end

输出:

代码语言:javascript
复制
1   true
2   false
>Exit code: 0
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1672985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档