2016-09-24 144 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