Я понимаю, что ключевое слово val определяет лежащую в основе переменную как неизменяемый тип (не может быть переназначено позднее). Теперь я пришел через пункт в программировании в Скале (глава 3, Следующие шаги в Скале - параметризировать массивы с типами), говоритсяВопрос о переменной Scala Mutability
val greetStrings: Array[String] = new Array[String](3)
greetStrings(0) = "Hello"
greetStrings(1) = ", "
greetStrings(2) = "world!\n"
Эти три строки кода иллюстрируют важное понятие, чтобы понять о Scala относительно значения val. Когда вы определяете переменную с val, переменная не может быть переназначена, , но объект, к которому он относится , потенциально может быть изменен. Таким образом, в этом случае вы не можете переназначить greetStrings для другого массива; greetStrings всегда укажет на тот же массив Array [String], с которым был инициализирован. Но вы можете изменить элементы этого массива [String] со временем, поэтому сам массив равен mutable.
поэтому его действительный для изменения элементов массива. И его недействительным, если мы определим, как этот
greetStrings = Array("a","b","c")
Это удовлетворяет формулировку ниже
При определении переменной с Валу, переменная не может быть переназначен, но объект, к которому он потенциально может быть изменен.
но если я объявить что-то вроде этого
val str = "immutable string"
По определению, данному в книге
что это означает объект, к которому оно относится потенциально может еще быть изменен в строке выше кода?
спасибо Elmo .. Так что «объект, к которому он относится, потенциально может быть изменен» применим только для массивов, объявленных с val (неизменяемым) .... ?? – RameshVel
Привет Рамеш. В Scala Array изменен (но вы не можете изменить его длину). Если вы хотите неизменную реализацию коллекции, вы можете попробовать List. – Elmo
спасибо Elmo .. я только начал читать List .. :) – RameshVel