2011-08-12 15 views
5

đoạn mã của tôi là dướiLàm cách nào để sử dụng chính xác Scala Hashmaps và Options?

import scala.collection.mutable.HashMap 

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

tôi nhận được lỗi biên dịch sau

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

Gợi ý: Các loại của 'crossingMap .get (crossingData) 'là' Tùy chọn [Tùy chọn [Long]] '. –

+0

Nếu bạn ánh xạ một 'Chuỗi' thành' Không', bạn cũng có thể không có ánh xạ ở vị trí đầu tiên, phải không? Đó là lý do tại sao (như Kipton Barros gợi ý) bạn có thể muốn có một 'HashMap [String, Long]'. – Blaisorblade

Trả lời

4

Bạn có thể muốn crossingMap chứa String -> Long cặp. Sau đó, bạn có thể làm những điều sau đây,

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

Nếu bạn thực sự muốn crossingMap giá trị có kiểu Option[Long], sau đó bạn sẽ phải làm một cái gì đó như thế nào,

val crossingMap = new HashMap[String, Option[Long]] 
val crossingData: String = "" 
val time: Long = crossingMap.getOrElse(crossingData, None).getOrElse(0) 
Các vấn đề liên quan