Con il rubino operatore ternario possiamo scrivere la seguente logica per un semplice if else costrutto:Ruby if .. elsIf .. else su una singola riga?
a = true ? 'a' : 'b' #=> "a"
Ma cosa succede se volevo scrivere questo come if foo 'a' elsif bar 'b' else 'c'
?
potrei lo scrivo come il seguente, ma è un po 'difficile da seguire:
foo = true
a = foo ? 'a' : (bar ? 'b' : 'c') #=> "a"
foo = false
bar = true
a = foo ? 'a' : (bar ? 'b' : 'c') #=> "b"
Esistono opzioni migliori per la gestione di un tale scenario o è questa la nostra migliore scommessa se vogliamo condensare se. .elsif..else logic in una singola riga?
Penso che il problema con la mancanza di leggibilità nella soluzione ternaria nidificata sia che la messa di tutto questo su una riga è di per sé difficile da leggere e nessuna delle soluzioni che creerai sarà molto più facile da analizzare. –
In altre parole, con più esperienza imparerai che spremere più codice possibile nel più piccolo spazio possibile non è mai un obiettivo valido. –
"spremere più codice possibile nel più piccolo spazio possibile non è mai un obiettivo valido." tranne nel codice macchina. –