Hur man använder loopar i Ruby

Datorprogram måste ofta utföra åtgärder ett antal gånger, inte bara en gång. Till exempel, ett program som skriver ut alla dina nya e-postmeddelanden måste skriva ut varje e-postmeddelande från en lista, inte bara en enda e-postadress. För att göra detta används konstruktioner som kallas slingor. En slinga kommer att upprepa uttalanden inuti ett antal gånger tills vissa villkor är uppfyllda.

Medan Loops

Den första typen av dessa slingor är en stundslinga. Även om slingor kommer att utföra alla uttalanden som finns i dem så länge villkorade uttalandet förblir sant. I detta exempel ökar slingan kontinuerligt variabelns värde jag av en. Så länge det villkorade uttalandet jag < 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

Tills att öglor är nästan identiska med medan öglor förutom att de kommer att slinga så länge som villkorsuppgiften är falsk. Samtidigt slingan 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 exemplet med medan slingan, förutom att använda en till-slinga, 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 punktsyntaxen (3. gånger) snarare än nyckelordssyntaxen som används medan och tills 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