Как правильно использовать Scala Hashmaps и Options вместе? - PullRequest
5 голосов
/ 13 августа 2011

Мои фрагменты кода ниже

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)

1 Ответ

4 голосов
/ 13 августа 2011

Возможно, вы захотите, чтобы 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...