我可以用 =更新一個mutable.Map值:
scala> val map = mutable.Map[Int,Int]()
map: scala.collection.mutable.Map[Int,Int] =Map()
scala> map(5)=5。
scala> map
res55: scala.collection.mutable. Map[Int,Int] = Map(5 -> 5)
scala> map(5) = 1.
scala> map
res57: scala.collection.mutable. Map[Int,Int] = Map(5 -> 6)
但是我不能用 =與getOrElseUpdate,我不明白為什么:
scala> map.getOrElseUpdate(5, 0) = 1>
<console>:16: error: value = is not a member of Int.
運算式不能轉換為賦值,因為接收器不是可賦值的。
map.getOrElseUpdate(5, 0) = 1。
^
我知道我以前用mutable.SortedMap與mutable.ArrayBuffer的值,它讓我使用該型別的 =操作與getOrElseUpdate沒有問題。是否有一些類似于mutable.Int的東西我應該使用呢?
uj5u.com熱心網友回復:
在scala中,你沒有獲得變數的 "參考 "的語意,這是因為scala的良好風格是當你不自己變異變數的時候,所以你不能以這種方式來做這個。與此相反,你可以用函式來描述變異,而不是直接用這種方式來變異變數:
import scala.collection.mutable
val map = mutable.Map.empty[Int,Int]
val yourKey: Int = ??
map.updateWith(yourKey){
case Some(i) => Some(i 1)
case None => Some(1)
}
另外,陣列緩沖區和其他可變集合中的 、 =和 :函式還有其他語意。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326320.html
標籤:
