2016-09-24 138 views
-4

如何根据for的第一个和最后一个数字循环生成一个整数序列?Lua - 生成数字序列

以下伪

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

应该产生以下输出

4 
5 
6 
7 
8 
9 

请包括一个简短的说明的解决方案确实在后台什么,什么术语将允许一个办法来解决问题。

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

+0

我发现i = 4, 9是解决方案感谢http://stackoverflow.com/questions/12020574/lua-for-variable-in-range,但我会要求解释这是干什么以及它叫什么。 “,”是不可测量的。类似于试图在Pythons文档中找到“in”。 :) – qubodup

+2

它被称为循环?! – hjpotter92

+1

https://devdocs.io/lua~5.3/index#3.3.5 – hjpotter92

回答

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)实施sequencecoroutine

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 
+1

''功能序列(从,到,IND) 本地IND = IND或1 本地I =从 - IND 到=到+ IND 回报函数() I = I + IND 返回I <和我或无 结束 结束 – warspyking

+0

只是一个简化和添加更多功能的建议:) – warspyking