To może być trochę niepotrzebne pytanie, próbowałem ostatnio poprawić jakość ruby i zacząłem czytać fantastyczne The Ruby Programming Language. Wspomnieliśmy, że literały łańcuchowe są uważane za zmienne, więc w pętli lepiej jest użyć zmiennej niż literału, ponieważ nowy ciąg będzie tworzony w każdej iteracji.Zmienność łańcucha ruby
Moje pytanie brzmi: dlaczego? Początkowo myślałem, że to z powodu interpolacji, ale symbole są niezmienne i wspierają interpolację. Pochodzące ze statycznego tła, nie ma dla mnie większego sensu.
EDIT:
Po przeczytaniu thenduks odpowiedź, myślę, że mogę go mieć. AFAIK, języki takie jak Java czy C# nie mają destrukcyjnych metod łańcuchowych (używają upcase, ale nie upcase!). Z powodu rzeczy takich jak upcase! lub < <, literał nie może być niezmienny.
Nie jest to w 100% pewne, druga możliwość jest taka, że chodzi o interakcję podczas kompilacji, co nie ma miejsca w języku skryptowym.
dodał trochę więcej do pytania i dał +1 :) –