Это может быть немного странным вопросом, я недавно пытался стать лучше на ruby и начал читать фантастический Язык программирования Ruby . Кое-что, что было упомянуто, - то, что строковые литералы считаются изменяемыми, поэтому в цикле лучше использовать переменную, чем литерал, поскольку новая строка будет создаваться на каждой итерации.
Мой вопрос - почему? Сначала я думал, что это из-за интерполяции, но символы являются неизменными, и они поддерживают интерполяцию. Исходя из статического фона, для меня это не имеет особого смысла.
EDIT:
После прочтения thenduks ответа, я думаю, что он может быть. AFAIK, языки как Java или C # не имеют разрушающих строковых методов (они используют верхний регистр, но не верхний регистр!). Из-за таких вещей, как upcase! или <<, литерал не может быть неизменным. </p>
Не уверен на 100%, другая возможность состоит в том, что происходит интернирование во время компиляции, чего просто не происходит в скриптовом языке.