按照书上的例子,运行了下,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