63.scala编程思想笔记——引用和可修改性

本文探讨Scala中var与val的区别,val作为对象引用时的特性,以及标准库中对象的可修改性和不可修改性差异。通过示例说明如何使用可修改与不可修改的Map。
原文地址为: 63.scala编程思想笔记——引用和可修改性

63.scala编程思想笔记——引用和可修改性

欢迎转载,转载请标明出处:http://blog.youkuaiyun.com/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")

 

 

 

 

 

 

 

 

 

 

 

 

 

 


转载请注明本文地址: 63.scala编程思想笔记——引用和可修改性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值