我明白那个val关键字确定基础变量是不可变类型(以后不能重新分配)。现在我在 scala 编程中遇到了一段(第 3 章,scala 中的后续步骤 - 用类型参数化数组),它指出
val greetStrings: Array[String] = new Array[String](3)
greetStrings(0) = "Hello"
greetStrings(1) = ", "
greetStrings(2) = "world!\n"
这三行代码说明了
需要理解的一个重要概念
关于 Scala 的含义
瓦尔。当你定义一个变量时
val,变量不能被重新赋值,
但它所指的对象
仍有可能改变。所以
在这种情况下,您无法重新分配
greetStrings 到不同的数组;
greetStrings 将始终指向
相同的 Array[String] 实例
它被初始化了。但你可以改变
该 Array[String] 的元素
随着时间的推移,所以数组本身是
可变的。
所以改变数组的元素是有效的。如果我们这样定义它是无效的
greetStrings = Array("a","b","c")
它满足下面的陈述
当你定义一个变量时
val,变量不能被重新赋值,
但它所指的对象
仍有可能改变。
但如果我声明这样的事情
val str = "immutable string"
根据书中给出的定义
这是什么意思它所引用的对象仍然可能被更改在上面的代码行中?
声明一个val不保证甚至暗示不可变类型。它仅声明您可能在 Java 中调用的内容final多变的。标识符不能重新分配,但值可以是可变类型。
在字符串值的示例中,您有两个val和一个不可变类型 String。所以这个标识符既不可重新分配也不可修改(不可变)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)