level 4
希望一楼引狼成功。。。
问题是这样的,我需要遍历一个数组,但这个数组是随时变化的,有可能其中的某个元素在当时突然变成了不存在(不是nil),这个时候就会发生异常(比如说 exception indexing 2),然后遍历就无法继续下去。。。
思前想后,我感觉这个异常是无法避免的,就想在发生异常时处理一下,让程序重新遍历一遍,可是不知道怎么做。。
2013年03月08日 20点03分
3
level 4
对了,顺便说一句这个“数组”其实是一个userdata
2013年03月08日 20点03分
5
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