Si l'immuabilité est "bonne" et pourtant, vous pouvez modifier la valeur dans une variable entier ou de chaîne (peu importe que vous obtenez une nouvelle référence - la valeur a changé) quelle est la bienvenue que les entier et la chaîne sont immuables?
Si entier était mutable, quel type de bugs seraient plus difficiles à trouver (etc.) que dans le cas où l'entier est immuable? Ou avec une chaîne?
Si les entiers où ne sont pas immuables ... Seriez-vous une raison de toutes les expressions mathématiques - comme ce que 2 * 2
ou i = i + 1
moyenne?
Code dans une langue imaginaire essaie de montrer à quel point il serait difficile de travailler sur le code si c'est le cas
Int two = 2;
SomeMethodThatCanMutateIntegers();
print("Two by Two is :")
print( two * two); // 9
print( 2 * 2); // that actually also print 9...
SomeMethodThatCanMutateIntegers()
{
2 = 3; // assignment - this "language" allows mutating integers.
// now 2 is actually the same value as 3 (which is "3" to start with...
// unless someone changed 3 to be some other number like 42).
}
Notez que cela est bien plus susceptible de se produire dans la vie réelle si les valeurs sont internées (la même valeur est représentée par un seul objet, souvent utilisé pour les constantes de cordes). A titre d'exemple Python stagiaires "petites" valeurs entières et si l'on accède à cette structure interne tenant ces valeurs, elles peuvent changer par inadvertance (ou malicieusement).
Vraisemblablement, Fortran IV et Fortran 77 seraient plats à plat permettant une telle amusement - https://everything2.com/title/changing+Le+value+of+5+in+fortran
Les constantes littérales ne sont pas placées dans le code en ligne. Au lieu de cela, ils sont alloués une zone de mémoire qui est ensuite attribuée à la valeur. C'est-à-dire en Fortran, "5" se comporte comme une variable. Une expression contenant un littéral 5 références la zone de mémoire allouée à celle-ci. Tous les paramètres aux sous-programmes et fonctions sont passés par référence.