1
使用解決方案here,我將兩個地圖加在一起,並將它們視爲稀疏矢量。所以使scala地圖添加通用
def addTwoVectors(map1: Map[Int, Double], map2: Map[Int, Double]) = {
map1 ++ map2.map{ case (k,v) => k -> (v + map1.getOrElse(k,0)) }
}
現在,我想使這個通用的,這樣
def addTwoMaps[I, D <% Numeric[D]](m1: Map[I, D], m2: Map[I, D]) = {
m1 ++ m2.map{ case (k,v) => k -> (v + m1.getOrElse(k, 0.asInstanceOf[D])) }
}
遺憾的是,似乎工作不:
error: type mismatch;
found : D
required: String
那麼,如何使這個功能通用?
注意'Numeric'是一個類型類型,所以你應該使用'D:Numeric',而不是'D <%Numeric [D]'。 –