为什么Map withDefaultValue返回Option = None

ssc*_*zio 2 scala map

我正在使用Scala 2.10.4,我无法弄清楚为什么我不能获得非现有密钥的默认值.我得到的是Option[Int]价值None.

  val m = Map[String, Int]().withDefaultValue(0) 
//> m  : scala.collection.immutable.Map[String,Int] = Map()
  m.get("ss") 
//> res0: Option[Int] = None
Run Code Online (Sandbox Code Playgroud)

我期待res0成为0.

为什么不呢?我怎样才能获得预期的行为?

Mic*_*jac 5

你想用apply而不是get.

scala> m("ss")
res0: Int = 0
Run Code Online (Sandbox Code Playgroud)

apply返回值的类型Map,并将使用默认值.根据指定键的存在get返回一个Option.

  • 我觉得现在是一个可怜的Java难民.谢谢 :) (3认同)
  • @sscarduzio:如果它让你感觉更好,我一直认为`map`上的`apply`和`get`应该切换名字...... (3认同)