按照书上的例子,运行了下,lua指针关键就是3个值,指针函数,不变量,控制变量

function iter(a,i) --指针函数
   i=i+1
   local v=a[i]
   if v then
       return i,v
   end
end

function isp(a)    --返回指针函数,不变量,控制变量
   return iter,a,0
end

for k,v in isp({1,2,4}) do --控制变量是k,也就是指针函数返回的第1个赋值的变量
   print(k,v)
end

print("直接用指针函数调用")
i=0
for k,v in iter,{1,2,4},i do
   print(k,v,i)
end

local function getnext (list, node)--参数为不变量,控制变量
   if not node then
       return list
   else
       return node.next
   end
end
function traverse (list)
   return getnext, list, nil
end

list3 = {val = 'hello2', next = nil}
list2 = {val = 'hello3', next = list3}
list = {val = 'hello', next = list2}

for node in traverse(list) do
   print(node.val)
end


运行结果

---------- lua ----------
1    1
2    2
3    4
直接用指针函数调用
1    1    0
2    2    0
3    4    0
hello
hello3
hello2

Output completed (3 sec consumed) - Normal Termination