Lua - 生成数字序列

时间:2016-09-24 18:23:23

标签: lua int sequence

如何根据for的第一个和最后一个数字生成一系列整数?

以下伪代码

for i in sequence(4,9) do
  print(i)
end

应该产生以下输出

4
5
6
7
8
9

请简要说明解决方案在后台执行的操作以及可以找到解决方案的术语。

搜索尝试会导致无法搜索的大量文档。

2 个答案:

答案 0 :(得分:2)

您可以使用numeric for loop来执行此操作。您可以在我参考的Lua部分或For statement上的Lua手册部分找到详细信息。

答案 1 :(得分:1)

仅仅为了完整记录,基本上有3种方法可以执行此循环,一种语法略有不同,另外两种语法与伪代码完全相同。链接指向Programming in Lua中的相关章节(顺便说一句,这是一本很好读的书)。

1)使用简单的numeric for loop - 在这种情况下,您将不会使用sequence

for i=4,9 do
  print(i)
end

2)将sequence实施为closure

function sequence(from,to)
  local i = from - 1
  return function()
    if i < to then
      i = i + 1
      return i
    end
  end
end

for i in sequence(4,9) do print(i) end

3)将sequence实施为coroutine

function sequence(from, to)
  return coroutine.wrap(function()
    for i=from,to do
      coroutine.yield(i)
    end
  end)
end

for i in sequence(4,9) do print(i) end