Ruby for Newbies betingede uttalelser og looper

Ruby er et av de mest populære språkene som brukes på nettet. Vi har startet en ny screencast-serie her på Nettuts + som vil introdusere deg til Ruby, samt de flotte rammene og verktøyene som følger med Ruby-utviklingen. I dette kapitlet ser vi på hvordan betingede utsagn og looper virker i Ruby.


Ta igjen

  • Del 1: Installere Ruby og Komme i gang
  • Del 2: Variabler, datatyper og filer 
  • Del 3: Arbeider med klasser
  • Del 4: Conditionals og Loops

Se Screencast


Betinget # 1: Hvis erklæring

If-setningen er en av de første typer forgrening du lærer når du programmerer. Du kan gjette hva det betyr: hvis dette er sant, gjør en ting; hvis ikke, gjør noe annet. I Ruby er disse ganske enkle å skrive:

navn = "Andrew" hvis navnet == "Andrew" setter "Hello Andrew" slutten hvis navnet == "Andrew" setter "Hello Andrew" ellers setter "Hei noen andre" slutter

Etter søkeordet hvis, kode i betinget utsagn. Etter det kommer koden til å utføres hvis tilstanden returnerer sann. Du lukker uttalelsen med slutt søkeord. Hvis du vil, kan du klemme en ellers uttalelse der inne, som vil forutsigbart utføre hvis tilstanden er feil.

elsif

Det er ikke vanskelig å se etter flere forhold. Bare sett så mange elsif uttalelser som du vil ha mellom hvis og ellers uttalelser. Ja, det er det elsif, et ekteskap av ellers og hvis.

ordre = : size => "medium" def make_medium_cofee setter "making medium statement" end #assume andre funksjoner hvis rekkefølge [: size] == "small" make_small_coffee; elsif rekkefølge [: size] == "medium" make_medium_coffee; elsif rekkefølge [: size] == "large" make_large_coffee; ellers make_coffee; slutt

Som jeg nevnte, kan du få så mange elsif forhold og deres tilsvarende kodeblokker som du vil.

Uttalelser mot uttrykk

De fleste programmeringsspråk skiller mellom setninger og uttrykk. Et utsagn er en kodekonstruksjon som ikke vurderer til en viss verdi. Et uttrykk er en kode konstruksjon gjør returnere en verdi. For eksempel kalles en funksjon et uttrykk, fordi det returnerer en verdi. Imidlertid er en hvis erklæring akkurat det, en erklæring, fordi den ikke returnerer en verdi. Dette betyr at du ikke kan gjøre dette i JavaScript:

message = if (someTruthyValue) "dette er sant";  ellers "dette er falskt"; 

Åpenbart kan du ikke gjøre dette fordi if-setningen ikke returnerer en verdi du kan tilordne budskap.

Du kan imidlertid gjøre dette med Ruby, fordi setninger er faktisk uttrykk, noe som betyr at de returnerer en verdi. Så vi kan gjøre dette

beskjed = hvis rekkefølge [: størrelse] == "liten" "lage en liten" elsif-ordre [: size] == "medium" "lage et medium" annet "lage kaffe" slutten

Uansett hvilken koden som kjøres, blir verdien av budskap.

Hvis som modifikator

Hvis du ikke har noen elsif eller ellers klausuler, og hvis setningen har bare en linje, kan du bruke den som en modifikator til en "normal" linje.

setter "å lage kaffe" hvis kunde?

Betinget # 2: Med mindre erklæring

I de fleste programmeringsspråk vil vi vende tilbake det betingede uttrykket, vi må negere det, vanligvis med banget (!) operatør.

engine_on = true hvis! engine_on # betyr "hvis ikke engine_on" setter "service engine" #should ikke bli satt, fordi "ikke engine_on" er falsk ende

Imidlertid har Ruby en veldig fin med mindre operatør, som holder oss fra å måtte gjøre det, samtidig som vi gir oss mye mer lesbar kode:

med mindre engine_on # "med mindre engine_on" er bedre enn "hvis ikke engine_on" "service engine" slutter

Akkurat som hvis, du kan bruke med mindre som modifikator:

setter "service engine" med mindre motor_on

Betinget # 3: Case / When Statement

Hvis du har mange muligheter til å jobbe gjennom, bruker du hvis / elsif / else kan være litt ordentlig. Prøv saken setningen.

time = 15 tilfelle når time < 12 puts "Good Morning" when hour > 12 && time < 17 puts "Good Afternoon" else puts "Good Evening" end

Det er ganske sorta-kanskje som a bryter / case setning i JavaScript (eller andre språk), bortsett fra at det ikke er noen variabel du vurderer. Inne i case / end søkeord, du kan sette så mange når uttalelser som du vil. Følg det når ved det betingede uttrykket, og deretter går kodelinjene etter det. Akkurat som if-setningen er saksoppstillingen virkelig et uttrykk, så du kan tilordne det til et uttrykk og fange en returverdi.

time = 15 melding = tilfelle når time < 12 "Good Morning" when hour > 12 && time < 17 "Good Afternoon" else "Good Evening" end puts message

Bryte opp uttrykk

Hvis du er kjent med JavaScript, vil du vite at blokkene med kode i en if-setning er omgitt av krøllete braces. Vi gjør ikke dette i Ruby, så det kan virke som Ruby er avhengig av hvite rom. Ingenting kunne være lenger fra sannheten (ta det, pythonistas :)).

Hvis vi vil skrive dine uttalelser som en-liners, må du skille de ulike delene av uttalelsene ... men hvordan? Vel, du kan bruke halvkolonner:

hvis navnet == "Andrew"; some_code; ellers; some_code; slutt

Hvis du ikke liker utseendet til det (som jeg ikke gjør), kan du sette søkeordet deretter mellom de betingede uttrykkene og kodenes linje.

hvis navnet == "Andrew" så sode_code; slutt

Dette fungerer også for en saksoppgave.

tilfelle når x> 20; setter "<20" when x < 20 then puts "<20" end

Loop # 1: While Loop

Så, det er betingede uttalelser (jeg mener, uttrykk). Hva med sløyfer? La oss se på mens looper først.

En stundsløyfe fortsetter å utføres til tilstanden oppgitt er feil:

ar = ["John", "George", "Paul", "Ringo"] i = 0 mens arr [i] setter arr [i] i + = 1 ende

Her slår vi over et array; når arr [i] returnerer false (betyr at det ikke er noen gjenstander igjen i arrayet), vil sløyfen slutte å utføres. Inne i løkken skriver vi ut det nåværende elementet i matrisen, og de legger til en til vår inkrementvariabel.

Du kan også bruke samtidig som som en modifikator

ar = ["John", "George", "Paul", "Ringo"] i = -1 setter arr [i + = 1] mens arr [i]

Loop # 2: Til Loop

Akkurat som med mindre er motsatt av hvis, før er motsatt av samtidig som. Det vil fortsette å løpe til tilstanden er sant:

days_left = 7; til days_left == 0 setter "det er fortsatt # days_left i uken" days_left - = 1 end

Og selvfølgelig er det også en modifikator.

days_left = 8 puts "det er fortsatt # days_left - = 1 i uken" til days_left == 1

Loop # 3: For Loop

Ja, Ruby har en forløp. Nei, det er ikke som for loop på andre språk. Det virker som en foreach loop, for looping over verdiene i en matrise eller hash:

arr = ["John", "George", "Paul", "Ringo"] for element i arr setter elementets slutt

Hvis du looping over en hash, kan du bruke to variable navn, en for nøkkelen og en for verdien:

joe = : name => "Joe",: alder => 30,: jobb => "rørlegger" for nøkkel, val i joe legger "# key er # val" slutten

Det er det!

Jeg håper du nyter vår Ruby for Newbies Screencast-serie. Hvis det er noe du vil se, gi meg beskjed i kommentarene! (Og hvis du ikke ser på videoene, bør du være. Det er bare en screencast-bonus på slutten av hver enkelt.)