In molti casi casi in alternativa a if
, e unless
, è più comodo e più chiaro utilizzare il costrutto case
. vediamolo in dettaglio. La sintassi classica è la seguente:
case command when "start" puts "avvio in corso..." when "stop" puts "arresto in corso..." else puts "Comandi: start/stop" end
L'istruzione che segue l'else
rappresenta il ramo di default che viene eseguito se tutte le altre condizioni falliscono. Se la condizione è sulla stessa linea dell'espressione è possibile utilizzare la parola chiave then
o i due punti ottenendo una sintassi più compatta:
case n when n > 10: puts "N è maggiore di dieci" when n < 10: puts "N è minore di dieci" else puts "N vale dieci" end
A differenza dell'esempio precedente in questo caso abbiamo utilizzato come condizioni delle espressioni booleane, in alternativa è possibile utilizzare anche delle espressioni regolari, dei range o delle classi rendendo il case uno strumento incredibilmente potente. Inoltre poiché case
ritorna il valore dell'ultima espressione valutata è possibile assegnare ad una variabile il risultato del costrutto:
value_n = case n when n > 10: "N è maggiore di dieci" when n < 10: "N è minore di dieci" else "N vale dieci" end