0
我在地圖上獲得的值正確的數據類型的地圖
Map[String, Any]
值可以是從字符串和雙打什麼序列和序列地圖。我想創建一個函數來識別值的類型,並在函數使用一個鍵時返回它。
我想到的想法是創建一個隱式類,它將'擴展'scala map
函數庫中的get
函數的功能,並將其放入我的package
文件中。 事情是這樣的:
implicit class RichMap(map: Map[String, Any]) {
def getImplicit(key: String) = {
val value = map.get(key)
value match {
case None => throw NonExistentKeyException(key + "does not exist")
case Some(v) => v match {
case s: String => s
//Other case statements
}
}
}
}
我用這樣的:
myMap.getImplicit(key)
正如你所看到的,它更多的是一種「蠻力force'y辦法。是否有更通用/優雅的方法可以用於我的問題陳述?
只返回'v'。如果這不是你想要的,那麼你的問題就不清楚了。 – rightfold
模式匹配將以哪種方式提供幫助?如果你的'Map'可以包含'Any'類型的值,編譯器就無法事先知道get方法必須返回哪個具體類型。當你有'String','Int'等情況時,'getImplicit'的返回類型仍然是'Any'。 –