2016-09-24 7 views
-4

Wie erzeuge ich eine Folge von ganzen Zahlen basierend auf der ersten und letzten Nummer für for um zu durchlaufen?Lua - Generiere Sequenz von Zahlen

Der folgende Pseudo-Code

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

sollte die folgende Ausgabe

4 
5 
6 
7 
8 
9 

Bitte legen Sie eine kurze Erklärung produzieren, was die Lösung der Hintergrund tut in und welche Terminologie man erlaubt hätte, die Lösung zu finden.

Suchversuche führen zu unerforschlichen großen Seiten der Dokumentation.

+0

Ich fand, dass i = 4, 9 ist die Lösung dank http://StackOverflow.com/Questions/12020574/Lua-For-Variable-In-Range, aber ich würde nach einer Erklärung fragen, was dies tut und wie es heißt. "," ist nicht suchbar. Ähnlich dem Versuch, "in" in Pythons Dokumentation zu finden. :) – qubodup

+2

Es heißt eine for-Schleife ?! – hjpotter92

+1

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

Antwort

2

Sie können dazu numeric for loop verwenden. Details finden Sie im Abschnitt Programmierung im Abschnitt Lua, auf den verwiesen wird, oder im Lua-Handbuch unter For statement.

1

Nur für den vollständigen Datensatz gibt es grundsätzlich 3 Möglichkeiten, wie Sie diese Schleife, eine mit einer etwas anderen Syntax, und 2 mit der genauen Syntax als Pseudocode tun können. Links zeigen auf relevante Kapitel in Programming in Lua (die übrigens ein tolles Buch zu lesen ist).

1) eine einfache numeric for loop Verwendung - in diesem Fall, dass Sie nicht sequence verwenden:

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

2) sequence als closure Implement:

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 als coroutine Implement :

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

'' Funktionsablauf (von, nach, ind) lokaler ind = ind oder 1 lokal i aus = - ind zu = to + ind return function() i = i + ind return i und i < oder null Ende Ende'' – warspyking

+0

Nur ein Vorschlag für die Vereinfachung und Hinzufügen von mehr Funktionalität :) – warspyking

Verwandte Themen