Je comprends que val mot-clé détermine la variable sous-jacente est un type immuable (ne peut être réaffecté plus tard). Maintenant, je viens à travers un paragraphe dans la programmation en scala (chapitre 3, Les prochaines étapes scala - paramétrez tableaux avec des types), il déclareQuestion sur Scala variable Mutability
val greetStrings: Array[String] = new Array[String](3)
greetStrings(0) = "Hello"
greetStrings(1) = ", "
greetStrings(2) = "world!\n"
Ces trois lignes de code illustrent un concept important de comprendre à propos de Scala concernant la signification de val. Lorsque vous définissez une variable avec val, la variable ne peut pas être réaffectée, mais l'objet auquel elle fait référence peut potentiellement encore être modifié. Donc dans ce cas, vous ne pouvez pas réattribuer greetStrings à un tableau différent; greetStrings pointe toujours vers le même instance Array [String] avec laquelle il a été initialisé. Mais vous pouvez modifier les éléments de ce tableau [String] au fil du temps, de sorte que le tableau lui-même est mutable.
donc c'est valide pour changer les éléments du tableau. Et son invalide si nous définissons comme celui-ci
greetStrings = Array("a","b","c")
Il répond à la déclaration ci-dessous
Lorsque vous définissez une variable avec val, la variable ne peut être réaffecté, mais l'objet auquel il renvoie pourrait potentiellement encore être changé.
mais si je déclare quelque chose comme ça
val str = "immutable string"
Par la définition donnée dans le livre
ce que cela signifie objet auquel il fait référence dans la ligne ci-dessus pourraient être encore changé de code ??
merci Elmo .. Donc, "objet auquel il se réfère pourrait potentiellement encore être changé" applicable uniquement pour les tableaux déclarés avec val (immuable) .... ?? – RameshVel
Salut Ramesh. Dans Scala, Array est mutable (mais vous ne pouvez pas changer sa longueur). Si vous voulez une implémentation immutable d'une collection, vous pouvez essayer List. – Elmo
merci Elmo .. je viens de commencer à lire Liste .. :) – RameshVel