Arvutiprogrammid peavad toiminguid tegema sageli mitu korda, mitte ainult üks kord. Näiteks programm, mis prindib kõik teie uued e-kirjad, peab printima iga meilisõnumi mitte ainult ühe, vaid loendist. Selleks kasutatakse konstruktsioone, mida nimetatakse silmusteks. Silmus kordab avaldused selle sees mitu korda, kuni mõni tingimus on täidetud.
Kuigi silmuseid
Nende silmuste esimene tüüp on mõni aeg. Kui silmused täidavad kõiki nendes sisalduvaid avaldusi, tingimusel, et tingimuslik lause kehtib. Selles näites suurendab silmus muutuja väärtust pidevalt i ühe kaupa. Niikaua kui tingimuslik väide i <10 on tõsi, ahel jätkab avalduse täitmist i + = 1 mis lisab muutujale ühe.
#! / usr / bin / env rubiin
i = 0
samas kui i <10
i + = 1
lõpp
paneb i
Kuni silmusteni
Kuni ahelad on peaaegu identsed ahelsilmustega, välja arvatud see, et need ahelduvad seni, kuni tingimuslause on vale. Kui loop on silmus, kui tingimus on tõene, siis kuni loop silmus kuni tingimus on tõene. See näide on while-silmuse näite funktsionaalne ekvivalent, välja arvatud kuni silmuse kasutamine,
kuni i == 10 . Muutujat suurendatakse ühe võrra, kuni selle väärtus võrdub kümnega.#! / usr / bin / env rubiin
i = 0
kuni i == 10
i + = 1
lõpp
paneb i
Loobub "Ruby Way"
Kuigi Ruby programmides kasutatakse silmuseid traditsioonilisemalt, on sulgemispõhised silmused tavalisemad. Nende silmuste kasutamiseks pole isegi vaja aru saada, mis on sulgurid või kuidas need toimivad; tegelikult vaadatakse neid tavaliste silmustena, hoolimata sellest, et need on kapoti all väga erinevad.
The Times Loop
korda silmust saab kasutada mis tahes muutuja puhul, mis sisaldab numbrit, või kasutada numbrit ennast. Järgnevas näites käivitatakse esimene ahel 3 korda ja teine ahel käivitatakse kasutaja poolt mitu korda. Kui sisestate 12, töötab see 12 korda. Võite märgata, et ajaline silmus kasutab punkti süntaks (Kolm korda teevad), mitte märksõna süntaks, mida aeg-ajalt ja kuni silmuseni kasutatakse. See on seotud sellega, kuidas ajakontuur töötab kapoti all, kuid seda kasutatakse samal viisil mõnda aega või kuni silmust kasutatakse.
#! / usr / bin / env rubiin
3. korda teeb
paneb "Seda trükitakse 3 korda"
lõpp
print "Sisesta number:"
num = saab.chomp.to_i
num.times teha
paneb "Ruby on suurepärane!"
lõpp
Iga silmus
iga silmus on kõigist silmustest ehk kõige kasulikum. Iga silmus võtab muutujate loendi ja käivitab nende kõigi lausete ploki. Kuna peaaegu kõik arvutamisülesanded kasutavad muutujate loendeid ja peavad iga loendis sisalduvaga midagi ette võtma, on iga silmus vaieldamatult kõige tavalisem silmus Rubiini kood. Üks asi, mida siin tähele panna, on argument silmuse väiteplokile. Selle muutuja väärtus, mida silmus vaatab, omistatakse muutuja nimele torutähtedes, mis on | n | näites. Kui silmus esimest korda töötab, siis n muutuja võrdub "Frediga", kui silmus teist korda töötab, on see võrdne "Bob" ja nii edasi.
#! / usr / bin / env rubiin
# Nimede loend
nimed = ["Fred", "Bob", "Jim"]
nimed.ja kõik tegema | n |
paneb kirja "Tere # {n}"
lõpp