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