Datorprogram måste ofta utföra åtgärder ett antal gånger, inte bara en gång. Till exempel måste ett program som skriver ut all din nya e-post skriva ut varje e-post från en lista, inte bara en enda e-post. För att göra detta används konstruktioner som kallas slingor. En slinga kommer att upprepa uttalanden inuti det ett antal gånger tills vissa villkor är uppfyllda.
Medan Loops
Den första typen av dessa slingor är en stundslinga. Även om öglor kommer att utföra alla uttalanden som finns i dem så länge villkorsuttalandet förblir sant. I detta exempel ökar slingan kontinuerligt variabelns värde jag av en. Så länge det villkorade uttalandet i <10 är sant kommer loopen att fortsätta köra uttalandet i + = 1 vilket lägger till en till variabeln.
#! / usr / bin / env ruby
i = 0
medan jag <10
i + = 1
slutet
sätter jag
Tills Loops
Till dess att öglor är nästan identiska med medan öglor är förutom att de kommer att slinga så länge som villkoren är falsk. Medan loopen kommer att slinga medan villkoret är sant, tills loopen kommer att slinga
fram tills villkoret är sant. Det här exemplet är den funktionella ekvivalenten till medan loop-exemplet, utom att använda en till-loop, tills jag == 10 . Variabeln ökas med en tills dess värde är lika med tio.#! / usr / bin / env ruby
i = 0
tills jag == 10
i + = 1
slutet
sätter jag
Loops "Ruby Way"
Även om de mer traditionella medan och tills slingor används i Ruby-program, är stängningsbaserade slingor vanligare. Det är inte ens nödvändigt att förstå vad stängningar är eller hur de fungerar för att använda dessa slingor; Faktum är att de ses som vanliga öglor trots att de är väldigt olika under huven.
The Times Loop
De gånger loop kan användas på vilken variabel som helst som innehåller ett nummer eller används på ett nummer själv. I följande exempel körs den första slingan 3 gånger och den andra slingan körs men många gånger matas in av användaren. Om du matar in 12 skulle den köras 12 gånger. Du kommer att märka att tidsslingan använder punkten syntax (3. gånger gör) snarare än nyckelordssyntaxen som används av medan och fram till slingan. Detta har att göra med hur times loop fungerar under huven men den används på samma sätt ett tag eller tills loop används.
#! / usr / bin / env ruby
3. gånger gör
sätter "Detta kommer att skrivas ut 3 gånger"
slutet
tryck "Ange ett nummer:"
num = gets.chomp.to_i
antal gånger gör det
sätter "Ruby is great!"
slutet
Varje slinga
De varje loop är kanske den mest användbara av alla slingor. Varje slinga tar en lista med variabler och kör ett block med uttalanden för var och en av dem. Eftersom nästan alla beräkningsuppgifter använder listor över variabler och måste göra något med var och en av dem i listan, är varje slinga överlägset den vanligaste slingan i Rubin kod. En sak att notera här är argumentet till slingans block av uttalanden. Värdet på den aktuella variabeln som slingan tittar på tilldelas variabelns namn i rörtecken, vilket är | N | i exemplet. Första gången slingan körs, n variabeln kommer att vara lika med "Fred", andra gången slingan körs kommer den att vara lika med "Bob" och så vidare.
#! / usr / bin / env ruby
# En lista med namn
names = ["Fred", "Bob", "Jim"]
names.each do | n |
sätter "Hej # {n}"
slutet