lua迭代器原理

当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
	end
end
local function ipairsss(a)
	return iter,a,0
end
local function pairsss(a)
	return next,a,nil
end
local b={1,2,3,4,5,6,7}
for i,v in pairsss(b) do
	print(i,v)
end



你可能感兴趣的:(lua)