Lua - 生成数字序列

如何基于首尾数字生成整数数字序列以供for循环使用?

以下伪代码

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

应该产生以下输出

4
5
6
7
8
9

请简要解释解决方案的背景以及哪些术语可以让人们找到解决方案。

搜索尝试导致了无法搜索的大量文档页面。

点赞
用户1442917
用户1442917

你可以使用 数值循环 来实现这一点。你可以在我参考的《Programming in Lua》中找到详细信息,或者在 Lua 手册中查看 for 语句 章节。

2016-09-24 18:38:45
用户221509
用户221509

仅供记录,你可以使用基本上有三种方式来完成此循环,其中一种具有稍微不同的语法,另外两种则与您的伪代码具有相同的语法。链接指向 Lua 编程 中相关章节(顺便说一下,这是一本很好的书)。

1)使用简单的数字for循环 - 在这种情况下,您不会使用 sequence

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

2)将 sequence 实现为 闭包

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 实现为 协程

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
2016-09-25 19:28:59