当lua调用for循环中的ipairs(a)时,它会获得三个值:迭代器函数iter、恒定状态a和控制变量的处置0。然后lua调用iter(a,0),得到1,a[1]。在第二次迭代中,继续调用iter(a,1),得到2,a[2],依次类推,直到得到的第一个nil元素为止。pairs与ipairs类似,也是用于遍历一个table中的所有元素。不同的是,它的迭代器函数是lua中的一个基本函数next。
local function iter(a,i) i=i+1 local v=a[i] if v then return i,v endendlocal function ipairsss(a) return iter,a,0endlocal function pairsss(a) return next,a,nilendlocal b={1,2,3,4,5,6,7}for i,v in pairsss(b) do PRint(i,v)end
新闻热点
疑难解答