Tracce
/
Ruby
Ruby
/
Programma
/
Condizionali
Co

Condizionali in Ruby

22 esercizi

Informazioni su Condizionali

Ruby ha quelle che vengono chiamate espressioni di controllo di flusso: servono a controllare il modo in cui il programma viene eseguito e assumono un valore «truthy» o «falsey». Esistono operatori che si possono usare per creare valori «truthy» o «falsey», e sono quelli che chiamiamo operatori di confronto.

Ci sono due espressioni di controllo principali che decidono quale codice verrà eseguito e quale no, cioè quale ramo, tra quelli disponibili, verrà preso.

Queste due sono: l'espressione if e l'espressione unless.

Operatori di confronto

Gli operatori di confronto servono a confrontare valori e restituiscono un valore true o false. Gli operatori seguenti richiedono che i due valori confrontati siano dello stesso tipo. Se i valori non sono dello stesso tipo, il compilatore solleva un errore. Ecco un elenco degli operatori e un esempio di quando restituiscono un valore true:

Metodo Descrizione Esempio
< minore di 4 < 5
<= minore o uguale 4 <= 4
> maggiore di 3 > 1
>= maggiore o uguale 2 >= 2

Gli operatori di uguaglianza e disuguaglianza, a differenza di quelli appena visti, possono confrontare qualsiasi tipo di valore. L'operatore == serve a verificare se due valori sono uguali, e questo include il controllo del tipo del valore. L'operatore != funziona allo stesso modo, ma restituisce true se i valori non sono uguali e false se lo sono. Ecco un elenco degli operatori di uguaglianza e disuguaglianza, con un esempio di quando restituiscono un valore true:

Metodo Descrizione Esempio
== uguale 4 == 4
!= diverso 5 != 4

L'operatore di confronto combinato

L'operatore di confronto combinato (talvolta chiamato spaceship operator) è un operatore di confronto speciale. È speciale perché non restituisce un valore «truthy» o «falsey», ma un numero. Si scrive <=> e serve a confrontare 2 valori. Restituisce 1 se il valore di sinistra è maggiore di quello di destra, -1 se il valore di sinistra è minore di quello di destra, e 0 se i valori sono uguali.

1 <=> 2 # => -1
2 <=> 2 # => 0
3 <=> 2 # => 1

L'istruzione if

L'istruzione if serve a verificare se una data condizione è «truthy» o «falsey». Se la condizione è «truthy», il codice all'interno dell'istruzione if viene eseguito. Un'istruzione if termina con la parola chiave end.

value = 1
if value == 1
  "1 is equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
end
# => nil

L'istruzione unless

L'istruzione unless funziona in modo molto simile all'istruzione if, ma esegue il codice al suo interno se la condizione è «falsey».

value = 1
unless value == 1
  "1 is not equal to 1"
end
# => nil

unless value > 2
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

L'istruzione else

L'istruzione else può essere usata insieme all'istruzione if. L'istruzione else viene eseguita se il ramo if non viene eseguito.

value = 1
if value == 1
  "1 is equal to 1"
else
  "1 is not equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
else
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

Le istruzioni «if» a cascata

L'istruzione elsif può essere usata insieme all'istruzione if. L'istruzione elsif viene eseguita se il ramo if non viene eseguito e la condizione dell'istruzione elsif è «truthy». Le istruzioni elsif possono essere incatenate tra loro e viene eseguita la prima condizione «truthy». Alla fine dell'istruzione if può esserci anche un'istruzione else, che viene eseguita se nessuna delle istruzioni precedenti era vera.

value = 1
if value == 0
  "1 is equal to 0"
elsif value > 2
  "1 is greater than 2"
else
  "1 is not equal to 0 and 1 is not greater than 2"
end
# => "1 is not equal to 0 and 1 is not greater than 2"

if e unless come suffisso

Le istruzioni if e unless possono essere usate anche come [suffisso][if-as-suffix]: è utile quando vuoi eseguire una singola riga di codice se una condizione è vera. Si fa mettendo l'istruzione if o unless dopo il codice che vuoi eseguire.

value = 1
"1 is equal to 1" if value == 1
# => 1 is equal to 1

"1 is not equal to 1" unless value == 1
# => nil
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Condizionali

La pratica è bloccata

Sblocca 10 altri esercizi per esercitarti su Condizionali