lua程序设计第二版中的一个程序的小bug
lua吧
全部回复
仅看楼主
level 8
照绿破S 楼主
5.1节最后lua递归实现unpack()有点小bug
原代码:
function unpack(t, i)
i = i or 1
if t[i] then
return t[i], unpack(t, i + 1)
end
end
函数体中的判断语句有bug,应该改成if t[i] ~= nil
否则调用打印函数print(unpack{2, 3, false, 4})将会打印2 3将false后的截断
2013年03月04日 15点03分 1
level 6
楼主是
正确的

2013年03月08日 16点03分 2
level 7
if t[i] ~= nil
2013年03月13日 13点03分 3
刚激动点快了,我擦。我并不清楚unpack()真实意义是什么,不过如果要求返还除了nil以外的所有值的话。那确实是要改成if t[i] ~= nil
2013年03月13日 13点03分
回复 295307953 :我的这个还有bug,unpack返回的是除了tab数组末尾为nil的所有值,包含中间为nil的值,比如unpack{2, nil, 3, false, nil, nil}返回的是2, nil, 3, false
2013年03月14日 00点03分
level 7
function unpack(t, i)
i = i or 1
if i <= #t then
return t[i], unpack(t, i + 1)
end
end
print(unpack({2, nil, 3, false, nil, nil}))
-----------
这样?@雨雾梦佳人
2013年03月14日 02点03分 4
对的~
2013年03月14日 04点03分
1