Я делаю это для добавления к существующей строке.
s = 'hello'
s.gsub!(/$/, ' world');
Есть ли лучший способ добавить к существующей строке.
Прежде чем кто-то предложит следующий ответ, дайте мне показать, что этот не работает
s = 'hello'
s.object_id
s = s + ' world'
s.object_id
В приведенном выше случае object_id будет различным для двух случаев.
<<
уже изменяет состояние объекта. Так делаетconcat
.widget.notes.where(:author_id => a).first
предположительно каждый раз возвращает новый объект, который будет иметь свою собственную независимую строку.вы также можете использовать следующее:
источник
<<
также должен быть цепочкой, так как он возвращает строку.Могу я спросить, почему это важно?
Я знаю, что это не прямой ответ на ваш вопрос, но тот факт, что вы пытаетесь сохранить идентификатор объекта строки, может указывать на то, что вам следует еще раз взглянуть на то, что вы пытаетесь сделать.
Например, вы можете обнаружить, что использование идентификатора объекта в строке приведет к ошибкам, которые довольно сложно отследить.
источник
Еще один способ:
источник
Вот еще один способ:
источник