Подтвердить что ты не робот

Как добавить строку к переменной, которая существует или нет?

мое решение похоже на

if (not (defined?(@results).nil?))
  @results += "run"
else
  @results = "run"
end

но я считаю, что есть что-то более простое...

4b9b3361

Ответ 1

Я бы сделал это следующим образом:

@results = @results.to_s + "run"

Это работает, потому что NilClass определяет метод #to_s, который возвращает строку с нулевой длиной, и поскольку переменные экземпляра автоматически инициализируются ноль.

Ответ 2

Вы правы:

(@results ||= "") << "run"

Чтобы уточнить, a || b - a ? a : b, что означает, что он пытается использовать значение a, если a является "правдивым" (не false или nil), но использует b, если a является "falsey". Использование ||=, следовательно, только обновляет переменную, если переменная равна nil. Затем << добавляет строку.