2011-09-16 14 views

risposta

23

È possibile utilizzare to_i per convertire nil a 0

x = x.to_i + 1

Oppure si può utilizzare succ

x = x.to_i.succ

3

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 .

7

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.

+2

Questo non funziona in Ruby 2.0 –

Problemi correlati