Ho utilizzato if yield self[x]
per valutare se un blocco restituisce vero o falso. Ho bisogno di rendere il blocco opzionale, e vedo suggerimenti per fare yield if block_given?
. Come posso combinare queste due linee?C'è un modo migliore per ottenere un valore da un blocco in Ruby?
7
A
risposta
7
Hai provato questo?
if block_given? && yield(self[x])
# ...
end
Questa condizione sempre sicuro quando non viene dato blocco, ossia tutto ciò che è in luogo di # ...
non saranno valutate. Se si desidera che la condizione di successo se nessun blocco è dato, fare questo, invece:
if !block_given? || yield(self[x])
# ...
end
O questo, anche se penso che sia più difficile da leggere:
unless block_given? && !yield(self[x])
# ...
end
3
Prova:
if block_given?
if yield self[x]
# Do something....
end
end
0
È possibile aggiungere una condizione all'intero blocco if
:
if yield self[x]
# do something...
end if block_given?
Perché non mostrarci cosa stai cercando di fare, piuttosto che descriverlo? In questo modo possiamo sistemare il tuo codice piuttosto che provare a inserire qualcosa? –