Strutture di controllo unless e case
unless è un'istruzione condizionale di Ruby opposta a "if"; si tratta infatti di un'istruzione che permette di dar vita ad un determinato comportamento sulla base di una condizione non soddisfatta ("falsa").
Per spiegare meglio il funzionamento di "unless" proponiamo un semplice esempio:
# costrutto unless # definiamo una variabile i = 3 # stabiliamo una condizione unless i >= 10 puts "Prima condizione" # introduciamo un'alternativa else puts "Seconda condizione" # chiudiamo il blocco unless - else endL'output del nostro script sarà "Prima condizione", infatti "unless" consente di verificare che una condizione non sia soddisfatta; nel nostro caso infatti la variabile "i" non è nè maggiore nè uguale a "10".
"unless" permette anche di essere utilizzata con una sintassi alternativa:
# condizione unless # sintassi semplificata i = 3 puts 'i è maggiore di 5' unless i >= 5La stessa tipologia di sintassi potrà essere utilizzata anche per l'istruzione "if":
# costrutto if # sintassi semplificata i = 5 puts 'i è maggiore di 3' if i >= 3Sempre riferendoci all'struzione if è possibile attuare un'ulteriore semplificazione a livello sintattico con un piccolo sacrificio a carico della leggibilità del codice:
# costrutto if # sintassi semplificata i = 5 puts val = i == 5 ? 'uguale' : 'diverso'L'operatore "?" ci permette infatti di effettuare un controllo tra valori; nel nostro esempio abbiamo stabilito che la variabile "i" è associata al valore "5", lo scriptino stabilisce che se ("?") "i" è identica a "5" dovrà essere stampata la stringa "uguale", diversamente (":"), dovrà essere stampata la stringa "diverso". L'output sarà naturalmente "uguale".
case è un costrutto che può essere utilizzato spesso come alternativa ad "if" ed "unless", utilizza infatti una struttura in grado di poter gestire più eventi definiti dall'utente; vediamo un semplice esempio:
# costrutto case - when # definizione della variabile nome = 'Carla' # introduzione dei possibili casi case nome when 'Carla' puts 'Ciao Carla' when 'Monica' puts 'Ciao Monica' # alternativa else puts 'Ciao!' # chiusura del blocco case - when endIn pratica una volta stabilito il valore di una variabile è possibile introdurre diversi eventi che si verificheranno quando (when) una determinata condizione verrà soddisfatta.
Anche "case" consente l'introduzione di un'alternativa con "else", si tratta infatti di un costrutto condizionale esattamente come "if" o "unless".
Nello stesso modo, anche per "case" è naturalmente possibile utilizzare una sintassi semplificata:
# costrutto case - when # sintassi semplificata # definizione della variabile i = 5 # introduzione dei possibili casi case i when i > 6: puts 'Maggiore di 6' when i == 6: puts 'Minore di 6' # alternativa else puts 'Uguale a 5' # chiusura del blocco case - when end
');







