Ruby: Как увеличить число, которое может быть nil?

Как я могу упростить это в Ruby:

x = (x || 0) + 1

?

Ответы

Ответ 1

Вы можете использовать to_i для преобразования nil в 0

x = x.to_i + 1

Или вы можете использовать succ

x = x.to_i.succ

Ответ 2

Это зависит от того, что вы считаете простым. Вы можете использовать

(x ||= 0) += 1

но я думаю, что соглашусь на вашу версию.

Если x - значение Хэш, см. этот ответ для использования значений по умолчанию в хэшах.

Ответ 3

Ваш код может закончиться ошибкой:

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)

Правильный ответ зависит от ваших входных данных и того, что вам нужно.