如何正确使用Scala哈希映射和选项?

如何正确使用Scala哈希映射和选项?,scala,Scala,下面是我的代码片段 import scala.collection.mutable.HashMap val crossingMap = new HashMap[String, Option[Long]] val crossingData: String = ... val time: Long = crossingMap.get(crossingData).getOrElse(0) 我得到以下编译错误 error: type mismatch; found : Any required:

下面是我的代码片段

import scala.collection.mutable.HashMap

val crossingMap = new HashMap[String, Option[Long]]
val crossingData: String = ...
val time: Long = crossingMap.get(crossingData).getOrElse(0)
我得到以下编译错误

error: type mismatch;
found   : Any
required: Long
val time: Long = crossingMap.get(crossingData).getOrElse(0)

您可能希望
crossingMap
包含
String->Long
对。然后你可以做下面的事情

val crossingMap = new HashMap[String, Long]
val crossingData: String = ""
val time: Long = crossingMap.getOrElse(crossingData, 0)
如果确实希望
crossingMap
值具有type
选项[Long]
,则必须执行以下操作:

val crossingMap = new HashMap[String, Option[Long]]
val crossingData: String = ""
val time: Long = crossingMap.getOrElse(crossingData, None).getOrElse(0)

提示:
crossingMap.get(crossingData)
的类型是
Option[Option[Long]]
。如果将
字符串
映射到
None
,那么您也可以先不进行映射,不是吗?这就是为什么(正如Kipton Barros所建议的)您可能需要一个
HashMap[String,Long]