Друг, который изучает Ruby как его первый язык программирования, задал мне тот же вопрос, когда просматривал Strings in Ruby в серии Ruby Koans. Я объяснил это ему, используя следующую аналогию;
У вас есть стакан воды, который наполовину полон, и вам нужно пополнить свой стакан.
Первый способ сделать это - взять новый стакан, наполовину наполнив его водой из-под крана, а затем использовать этот второй наполовину полный стакан, чтобы наполнить свой стакан. Вы делаете это каждый раз, когда вам нужно пополнить свой стакан.
Второй способ - взять наполовину полный стакан и просто наполнить его водой прямо из-под крана.
В конце дня у вас будет больше очков для чистки, если вы решите выбрать новый стакан каждый раз, когда вам нужно пополнить свой стакан.
То же самое относится к оператору лопаты и оператору равенства плюс. Плюс оператор «равный» выбирает новый «стакан» каждый раз, когда ему необходимо пополнить свой стакан, в то время как оператор лопатки просто берет тот же стакан и наполняет его. В конце дня больше «стеклянной» коллекции для оператора Plus Plus.