scala - 如何正确使用 Scala Hashmaps 和 Options?

标签 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: 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类型为 Option[Long] 的值,那么你必须做一些类似的事情,
val crossingMap = new HashMap[String, Option[Long]]
val crossingData: String = ""
val time: Long = crossingMap.getOrElse(crossingData, None).getOrElse(0)

关于scala - 如何正确使用 Scala Hashmaps 和 Options?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047145/

相关文章:

scala - Scalala绘制: Compile Error

scala - 如何创建一个在标志降低之前暂停的 Akka Stream Flow?

scala - 在 Spark-Streaming 和 Cassandra (Scala) 中使用 future

scala - 在 Slick 中导入不同的数据库驱动程序

scala - 当使用 scala 路径依赖类型作为函数 codomain 时,为什么不能为该函数添加别名?

scala - 如何使用 ValueMapper 使用 Scala 更改 Kafka Streams 10.2 中的值类型

scala - 如何使用 Scala 和 JUnit 4 设置预期异常

scala - Spark序列化错误之谜

r - sparklyr hadoop配置

scala - Scala AnyRef.clone 执行浅复制还是深复制?