Ответ 1
Вы можете использовать to_i
для преобразования nil
в 0
x = x.to_i + 1
Или вы можете использовать succ
x = x.to_i.succ
Как я могу упростить это в Ruby:
x = (x || 0) + 1
?
Вы можете использовать to_i
для преобразования nil
в 0
x = x.to_i + 1
Или вы можете использовать succ
x = x.to_i.succ
Это зависит от того, что вы считаете простым. Вы можете использовать
(x ||= 0) += 1
но я думаю, что соглашусь на вашу версию.
Если x
- значение Хэш, см. этот ответ для использования значений по умолчанию в хэшах.
Ваш код может закончиться ошибкой:
x = 'a'
x = (x || 0) + 1 #can't convert Fixnum into String (TypeError)
Существует возможность использовать to_i
с +1
или succ
(см. ответ Chandras)
Но, возможно, только succ
также поможет вам:
x = x.succ if x.respond_to?(:succ)
Правильный ответ зависит от ваших входных данных и того, что вам нужно.