Я бы хотел сделать это:
summary << reason
В моем случае summary
- это строка, содержащая несколько предложений, а reason
- одно из таких предложений.
Это прекрасно работает, если цель уже имеет значение, но иногда summary
может быть nil
. В этом случае это поднимает:
NoMethodError: undefined method `<<' for nil:NilClass
Итак, я мог бы написать что-то вроде этого:
if summary
summary << reason
else
summary = reason
end
Это громоздко и безобразно. Я могу скрыть это с помощью нового метода, такого как append(summary, reason)
, но я надеюсь, что есть рубиновая идиома, которая может обернуть это кратко.
Я оптимистично попробовал несколько вариантов, но безуспешно:
summary += reason
summary &<< reason
В других сценариях я мог бы построить множество причин (вы можете просто переложить в пустой массив),затем, наконец, объедините их в сводку ... но это не жизнеспособно в моем текущем проекте.
Я также не могу заполнить сводку пустой строкой (выравнивание в пустую строку также работает нормально), как и другой кодзависит от того, иногда он равен нулю.
Итак, есть ли в Ruby идиома "безопасная лопата" или простая "лопата или назначить", особенно для строк, которые могут быть равны нулю?