TA的每日心情 | 开心 2021-12-13 21:45 |
---|
签到天数: 15 天 [LV.4]偶尔看看III
|
63.scala编程思想笔记——引用和可修改性
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50458735
源码下载连接请见第一篇笔记。
var可以被修改,val不行。但是val如果是对象,那么对象本身属性是可以修改的如下:
import com.atomicscala.AtomicTest._
class X(var n:Int)
val x = new X(11)
x.n is 11
x.n = 22
x.n is 22
此处,x只是引用了对象。
可修改性表示一个对象可以改变状态。
Scala标准库中的许多类在缺省情况下都是不可修改的,但是也有可修改版本,不可修改如下:
import com.atomicscala.AtomicTest._
val m = Map(5->"five",6->"six")
m(5) is "five"
// m(5) = "5ive" // Fails
m + (4->"four") // Doesn"t change m
m is Map(5 -> "five", 6 ->"six")
val m2 = m + (4->"four")
m2 is
Map(5 -> "five", 6 ->"six", 4 -> "four")
可修改版本如下:
import com.atomicscala.AtomicTest._
import collection.mutable.Map
val m = Map(5 -> "five", 6 ->"six")
m(5) is "five"
m(5) = "5ive"
m(5) is "5ive"
m += 4 -> "four"
m is
Map(5 -> "5ive", 4 ->"four", 6 -> "six")
// Can"t reassign val m:
// m = m + (3->"three")
|
|