2011-08-12 17 views
5

mój kod fragmenty są poniżejJak prawidłowo używać Hashmapów i Opcji Scala?

import scala.collection.mutable.HashMap 

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

otrzymuję następujący błąd kompilacji

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

wskazówka: typ 'crossingMap .get (crossingData) 'to' Option [Option [Long]] '. –

+0

Jeśli zamapujesz 'String' na' None', to nie możesz mieć odwzorowania w pierwszej kolejności, prawda? Właśnie dlatego (jak sugeruje Kipton Barros) prawdopodobnie potrzebujesz 'HashMap [String, Long]'. – Blaisorblade

Odpowiedz

4

Możesz chcieć crossingMap zawierać String -> Long par. Następnie można wykonać następujące czynności,

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

Jeśli naprawdę chcesz wartości crossingMap mieć typ Option[Long], będziesz musiał zrobić coś takiego,

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