Qualcuno può spiegarmi la differenza tra if
e unless
e quando usarlo?Differenza - a meno che/se
risposta
unless
è solo un negato. Cioè, esegue qualunque cosa contenga se la condizione è non true.
unless foo?
# blabla
end
significa semplicemente
if !foo?
# blabla
end
E 'tutta una questione di ciò che si trova più facile da leggere, davvero.
Vedi anche: Unless, The Abused Ruby Conditional
unless
è semplicemente equivalente a if not
. Quando usi quale è una preferenza personale.
La differenza tra if
e unless
è che sono esatti opposti l'uno dall'altro:
if
prende una condizione, un allora blocco e un altro blocco opzionale, e valuta l'allora blocco se la condizione è veritiera, altrimenti valuta il blocco elseunless
accetta una condizione, un blocco di blocco e un blocco di altro opzionale e valuta il blocco di se La condizione è falsa, altrimenti valuta il blocco else
O, in altre parole: significano praticamente la stessa cosa in Ruby come in inglese.
Il tuo testo sopra sembra fuorviante data la possibilità di post condizionali. (Mentre la distinzione tra i due è corretta, il resto implica che hai bisogno di un blocco 'then', e che potresti sempre scegliere di mettere un blocco' else'.) – Phrogz
Utilizzare "a meno che" non sia semplice per me quando c'è un argomento, ma trovo confuso quando ce ne sono diversi. E quando si utilizza ||
anziché &&
.
"A meno che questo o quello" sia solo più difficile per il mio cervello. "se non questo e non quello" è più facile.
Sarà difficile mantenere questo codice in futuro se lo utilizzo. Quindi non lo faccio.
- 1. Rubino a meno && dichiarazione
- 2. meno o uguale a
- 3. Pathfinding - A * con meno turni
- 4. GCC cambia meno di o uguale a
- 5. Differenza tra lista e tupla (meno immutabilità) in Python?
- 6. come calcolare la differenza di colore in percentuale per Meno
- 7. MENO @import: passaggio dei percorsi a lessc
- 8. uscita tubo dal comando interattivo a meno
- 9. Ruby "ritorno a meno che zero" idioma
- 10. Sintassi SASS equivalente a spazio MENO ("+ _")
- 11. MENO Prevenire meno dall'aggiungere l'url relativo
- 12. Compilatore Java per meno CSS?
- 13. meno 1 ora a DateTime usando Joda Time
- 14. I metodi di estensione per le interfacce sono considerati meno prioritari rispetto a quelli meno specifici?
- 15. più (+) rispetto meno (-) in Objective-C
- 16. Per dimensionare o meno?
- 17. Override variabili MENO
- 18. jQuery convalida meno di
- 19. Junit: meno di asserzione?
- 20. Data meno 1 anno?
- 21. CSS MENO Placeholder Mixin
- 22. Riutilizzo stili nidificati MENO
- 23. variabili negativi in meno
- 24. differenza tra A aaa; e A aaa();
- 25. Differenza tra 'a == null' e 'null == a'
- 26. XSLT format-numero decimale, il numero a meno di un
- 27. Aggiorna attributi a meno che non sia vuoto?
- 28. Handling parametrizzata percorsi a Express-JWT che utilizzano meno
- 29. Come faccio a fare più o meno dell'utilizzo di MongoDB?
- 30. Per l'elenco a meno che vuota in python
'a meno che commenti.empty?' Appaia più carino di 'if! Comments.empty?', Ma lo utilizza con una clausola else, come: 'unless comments.empty? allora aaa else bbb end' potrebbe essere più confuso dell'equivalente invertito: 'if comments.empty? bbb else aaa end' – Phrogz
Ruby non segue lo Zen di Python: "Ci dovrebbe essere uno - e preferibilmente solo un modo - ovvio per farlo". –