Come potrei semplificare questo in Ruby:Ruby: come incrementare un numero che potrebbe essere zero?
x = (x || 0) + 1
?
Come potrei semplificare questo in Ruby:Ruby: come incrementare un numero che potrebbe essere zero?
x = (x || 0) + 1
?
È possibile utilizzare to_i
per convertire nil
a 0
x = x.to_i + 1
Oppure si può utilizzare succ
x = x.to_i.succ
Il codice può finire in un errore:
x = 'a'
x = (x || 0) + 1 #can't convert Fixnum into String (TypeError)
V'è la possibilità di utilizzare to_i
con +1
o succ
(vedi Chandras answer)
Ma forse solo succ
vi aiuterà anche:
x = x.succ if x.respond_to?(:succ)
La risposta corretta dipendono i dati di ingresso e di che cosa avete bisogno .
Dipende da ciò che consideri semplice. Si potrebbe utilizzare
(x ||= 0) += 1
ma penso che mi accontenterei per la versione.
Se x
è un valore di hash, consultare this answer per utilizzare i valori predefiniti in Hash.
Questo non funziona in Ruby 2.0 –
sembra abbastanza buono per me (beh, x2 = (x || 0) + 1 sarebbe meglio), più esplicito che "magico" to_i conversioni. – tokland
Quanto più semplice puoi ottenere? Perché pensi che ci sia spazio per migliorare sulla tua soluzione esistente? – meagar