在scala中从LinkedHashMap中复杂地检索值

Bru*_*uce 0 scala

有人可以澄清以下代码的行为吗?

scala> val map =  new collection.mutable.LinkedHashMap[String,collection.mutable.ArrayBuffer[String]]()
map: scala.collection.mutable.LinkedHashMap[String,scala.collection.mutable.ArrayBuffer[String]] = Map()

scala> val arr = map.getOrElse("Hi",None)
arr: Serializable with Equals = None
Run Code Online (Sandbox Code Playgroud)

为什么类型为Serializable的arr与Equals而不是ArrayBuffer [String]?

非常感谢!

4le*_*x1v 5

因为你混淆了None哪种类型Option[Nothing]与其他东西,也许Nil?但它有类型List[Nothing],这也是错误的.要使编译正确,您应该写:

scala> map.getOrElse("Hi",ArrayBuffer.empty)
res3: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer()
Run Code Online (Sandbox Code Playgroud)