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