【新人属性,标题要长】一个lua的小问题。。。。
lua吧
全部回复
仅看楼主
level 4
Breakord 楼主
2013年03月08日 20点03分 1
level 4
Breakord 楼主
希望一楼引狼成功。。。
问题是这样的,我需要遍历一个数组,但这个数组是随时变化的,有可能其中的某个元素在当时突然变成了不存在(不是nil),这个时候就会发生异常(比如说 exception indexing 2),然后遍历就无法继续下去。。。
思前想后,我感觉这个异常是无法避免的,就想在发生异常时处理一下,让程序重新遍历一遍,可是不知道怎么做。。
2013年03月08日 20点03分 3
level 4
Breakord 楼主
[囧]我也不知道我描述清楚没有,总之就是想知道如何在发生异常时让遍历数组的过程重新开始或者继续下去
2013年03月08日 20点03分 4
level 4
Breakord 楼主
对了,顺便说一句这个“数组”其实是一个userdata
2013年03月08日 20点03分 5
level 6
额,这个的话应该可以把k设成弱表。。
2013年03月09日 00点03分 6
level 6
顺便说下我不是看照片进来的哈哈(>_<)
2013年03月09日 00点03分 7
level 7
[囧]别和我说你的意思是下标有时候是nil
2013年03月13日 12点03分 9
level 7
直接贴上代码吧[囧]
2013年03月13日 12点03分 10
level 4
变成nil也没什么啊。
你要给你的userdata增加一个字段用来反映数组长度。
比如在表的某个字段记录下表的长度。然后根据长度进行迭代。
a={len=5,[1]='x',[2]='y',[3]='z',[4]='a',[5]='b'}
a[3]=nil
for i = 1,a.len do
something()
end
这里不能使用 # 和 getn 取得数组长度,因为你的数组中间夹杂nil元素。只能在产生数组的过程中及时更新数组长度字段。
2013年03月15日 05点03分 11
level 7
嘛?
for i = 1,a.len do - > for i = 1,#a do
如果中间夹杂着nil。#a是可以取到长度的啊。如果最后一个元素是nil的话才不会计算最后一个nil的长度啊
2013年03月17日 15点03分 12
1