Lua 有人能解释一下这是干嘛的吗?

我正在学习lua,有人能解释一下这段小代码是如何工作的吗?

table = {1, 2, 3, 4, 5}

function num(table, start)
  table = start

  return function()
    i = i + 1
    if table[i - 1] then
      return i - 1,[table - 1]
    else
      return nil
  end
end

for k,v in ipairs(table) do
  print(k,v)
end
点赞
用户3979429
用户3979429

这段代码看起来像是为了创建一个自定义的迭代器函数。但是它没有完成,以下是我的最佳猜测:

tab = {1, 2, 3, 4, 5}

function num(tab, start)
  local i = start or 1
  return function()
    i = i + 1
    if tab[i - 1] then
      return i - 1,tab[i - 1]
    else
      return nil
    end
  end
end

for k,v in ipairs(tab) do
  print(k,v)
end

for k,v in num(tab) do
  print(k,v)
end

这段代码的作用是首先循环遍历 tab 并打印键值对。接下来使用由它创建的迭代器打印键值对之前的键值对。

迭代器会一直返回,直到它返回 nil。然后 for 循环就结束了。

2015-11-03 02:34:11