Ceci est en ligne avec les Rubis de la conception, comme vous le notez. Les cordes immuables sont plus efficaces que les cordes mutables - moins de la copie, comme les chaînes de caractères sont ré-utilisés - mais rendre le travail plus difficile pour le programmeur. Il est intuitif de voir les chaînes de caractères comme mutable - vous pouvez concaténer ensemble. Pour faire face à cela, Java silencieusement se traduit par concaténation (via +
) des deux chaînes dans l'utilisation d'un objet StringBuffer, et je suis sûr qu'il ya d'autres hacks. Ruby choisit plutôt de faire des chaînes de mutables par défaut au détriment des performances.
Ruby a également un certain nombre de méthodes de destruction tels que String#upcase!
qui s'appuient sur les cordes mutable.
Une autre raison possible est que Ruby est inspiré par Perl, Perl et arrive à utiliser les cordes mutables.
Ruby a des Symboles et surgelés, les Cordes, les deux sont immuables. Comme un bonus supplémentaire, les symboles sont garantis d'être unique par possible de la chaîne de valeur.