Lua 迭代器错误: 尝试调用一个数字值

function iter2(key,max)

    if key == nil then
        return 2 , "val:" .. 2
    end

    if key >= max then
        return nil
    else
        return key+2, "val:" .. key+2
    end

end

如果我按照下面的方式调用上面的迭代器,我会收到错误信息(尝试调用一个数字值):

for k,v in iter2(1,8) do
    print(k,v)
end

然而,如果我使用以下方式,它可以正常工作:

for k,v in iter2,1,8 do
    print(k,v)
end

有人能解释一下两种调用方式之间的区别吗?

点赞