Ruby for Newbies dichiarazioni condizionali e loop

Ruby è una delle lingue più popolari utilizzate sul web. Abbiamo avviato una nuova serie di screencast qui su Nettuts + che ti introdurrà a Ruby, oltre ai grandi framework e strumenti che accompagnano lo sviluppo di Ruby. In questo capitolo, vedremo come funzionano le istruzioni condizionali e i loop in Ruby.


Raggiungere

  • Parte 1: Installazione di Ruby e Guida introduttiva
  • Parte 2: Variabili, tipi di dati e file 
  • Parte 3: Lavorare con le classi
  • Parte 4: Condizionali e cicli

Visualizza Screencast


Condizionale n. 1: se dichiarazione

L'istruzione if è uno dei primi tipi di ramificazioni che si apprendono durante la programmazione. Puoi indovinare cosa significa: se questo è vero, fai una cosa; se non lo è, fai qualcos'altro. In Ruby, questi sono abbastanza facili da scrivere:

name = "Andrew" se name == "Andrew" inserisce "Hello Andrew" end if name == "Andrew" inserisce "Hello Andrew" altrimenti inserisce "Hello qualcun altro" fine

Dopo la parola chiave Se, codice nella tua dichiarazione condizionale. Dopodiché viene fornito il codice da eseguire se la condizione restituisce true. Si chiude la dichiarazione con il fine parola chiave. Se vuoi, puoi spremere un altro dichiarazione in là, che verrà eseguita in modo prevedibile se la condizione è falsa.

ELSIF

Non è difficile controllare per più condizioni. Metti tanti quanti ELSIF dichiarazioni come desideri tra il Se e altro dichiarazioni. Sì, è così ELSIF, un matrimonio di altro e Se.

order = : size => "medium" def make_medium_cofee mette "making medium statement" end #assume altre funzioni se order [: size] == "small" make_small_coffee; elsif order [: size] == "medium" make_medium_coffee; elsif order [: size] == "large" make_large_coffee; altrimenti make_coffee; fine

Come ho detto, puoi averne altrettanti ELSIF condizioni e i relativi blocchi di codice che vuoi.

Dichiarazioni contro espressioni

La maggior parte dei linguaggi di programmazione distingue tra istruzioni ed espressioni. Una dichiarazione è un costrutto di codice che non valuta un determinato valore. Un'espressione è un costrutto di codice fa restituire un valore. Ad esempio, chiamare una funzione è un'espressione, poiché restituisce un valore. Tuttavia, un'istruzione if è esattamente questa, una dichiarazione, perché non restituisce un valore. Questo significa che non puoi farlo nel tuo JavaScript:

message = if (someTruthyValue) "questo è vero";  else "questo è falso"; 

Ovviamente, non è possibile farlo perché l'istruzione if non restituisce un valore che è possibile assegnare a Messaggio.

Tuttavia, puoi farlo con Ruby, perché le istruzioni sono in realtà espressioni, nel senso che restituiscono un valore. Quindi possiamo farlo

messaggio = se ordine [: dimensione] == "piccolo" "fare un piccolo" ordine elsif [: size] == "medium" "fare un mezzo" altro "fare caffè" fine

Qualsiasi blocco di codice verrà eseguito diventerà il valore di Messaggio.

Se come modificatore

Se non ne hai ELSIF o altro clausole e la tua istruzione if ha solo una riga, puoi usarla come modificatore su una riga "normale".

mette "making coffee" se customer.would_like_coffee?

Condizionale n. 2: Salvo dichiarazione

Nella maggior parte dei linguaggi di programmazione, vogliamo invertire il ritorno dell'espressione condizionale, dobbiamo negarlo, solitamente con il botto (!operatore).

engine_on = true if! engine_on # che significa "se non engine_on" mette "motore di servizio" # non deve essere inserito, perché "not engine_on" è falso

Tuttavia, Ruby è davvero carino salvo che operatore, che ci impedisce di doverlo fare, dandoci un codice molto più leggibile:

a meno che engine_on # "a meno che engine_on" sia migliore di "se non engine_on" "fine manutenzione motore"

Proprio come Se, Puoi usare salvo che come modificatore:

mette "motore di servizio" a meno di engine_on

Condizionale n. 3: caso / quando dichiarazione

Se hai un sacco di opzioni su cui lavorare, usa se / elsif / else potrebbe essere un po 'prolisso. Prova la dichiarazione del caso.

ora = 15 caso quando ora < 12 puts "Good Morning" when hour > 12 && ora < 17 puts "Good Afternoon" else puts "Good Evening" end

È un po 'come se fosse un po' scatola dell'interruttore dichiarazione in JavaScript (o in altre lingue), tranne per il fatto che non esiste una variabile che stai valutando. Dentro il cassa / fine parole chiave, puoi metterne tante quando dichiarazioni come vorresti. Seguilo quando dall'espressione condizionale, e poi le linee di codice lo seguono. Proprio come l'istruzione if, l'istruzione case è davvero un'espressione, quindi è possibile assegnarla a un'espressione e acquisire un valore restituito.

hour = 15 message = case when hour < 12 "Good Morning" when hour > 12 && ora < 17 "Good Afternoon" else "Good Evening" end puts message

Rompere le espressioni

Se hai familiarità con JavaScript, saprai che i blocchi di codice in un'istruzione if sono circondati da parentesi graffe. Non lo facciamo in Ruby, quindi potrebbe sembrare che Ruby dipenda dallo spazio bianco. Niente potrebbe essere più lontano dalla verità (prendilo, pythonistas :)).

Se vogliamo scrivere le tue affermazioni come one-liner, devi separare le diverse parti delle affermazioni ... ma come? Bene, puoi usare il punto e virgola:

se nome == "Andrew"; some_code; altro; some_code; fine

Se non ti piace l'aspetto di quello (che non lo faccio), puoi inserire la parola chiave poi tra le espressioni condizionali e la linea di codice.

se nome == "Andrew", quindi sode_code; fine

Questo funziona anche per una dichiarazione di un caso.

caso quando x> 20; mette "<20" when x < 20 then puts "<20" end

Loop # 1: While Loop

Quindi, quelle sono dichiarazioni condizionali (intendo espressioni). Che ne dici di loop? Diamo un'occhiata prima a loop.

Un ciclo while continuerà ad essere eseguito finché la condizione dichiarata non è falsa:

arr = ["John", "George", "Paul", "Ringo"] i = 0 mentre arr [i] mette arr [i] i + = 1 fine

Qui passiamo su un array; quando arr [i] restituisce false (il che significa che non ci sono oggetti lasciati nell'array), il ciclo smetterà di essere eseguito. All'interno del ciclo, stampiamo l'elemento corrente nell'array e ne aggiungiamo uno alla nostra variabile di incremento.

Puoi anche usare mentre come un modificatore

arr = ["John", "George", "Paul", "Ringo"] i = -1 mette arr [i + = 1] mentre arr [i]

Loop # 2: Until Loop

Proprio come salvo che è il contrario di Se, fino a è il contrario di mentre. Continuerà a loop fino a quando la condizione è vera:

days_left = 7; until days_left == 0 puts "ci sono ancora # days_left nella settimana" days_left - = 1 fine

E, naturalmente, è anche un modificatore.

days_left = 8 puts "ci sono ancora # days_left - = 1 nella settimana" fino a days_left == 1

Loop # 3: For Loop

Sì, Ruby ha un ciclo for. No, non è come il ciclo for in altre lingue. Funziona come un ciclo foreach, per il looping sui valori di un array o di un hash:

arr = ["John", "George", "Paul", "Ringo"] per la voce in arr mette fine articolo

Se esegui il ciclo su un hash, puoi utilizzare due nomi di variabili, uno per la chiave e uno per il valore:

joe = : name => "Joe",: age => 30,: job => "plumber" per key, val in joe puts "# chiave è # val" fine

Questo è tutto!

Spero ti piaccia la nostra serie Ruby for Newbies Screencast. Se c'è qualcosa che ti piacerebbe vedere, fammelo sapere nei commenti! (E se non stai guardando i video, dovresti esserlo. C'è un bonus solo per screencast alla fine di ognuno.)