0
有大量的圓形Scala中的錯誤信息could not find implicit value
其他問題。答案是非常具體的,不適用於這個特定的問題。微風argmax:找不到內含價值
在斯卡拉微風,我想申請argmax
到SparseVector[Int]
。根據該文件(和直覺),這與
argmax(SparseVector.zeros[Int](5))
工程進口breeze.linalg._
後容易。
我的實際測試的代碼如下所示:
import breeze.linalg.{Vector, argmax, sum}
val counts: Map[Int, Vector[Int]] = ...
counts
.filter(e => sum(e._2) > 10)
.take(100)
.map(e => (e._1, argmax(e._2)))
.foreach(println)
然而,編譯器會引發以下錯誤信息:
Error:(41, 37) could not find implicit value for parameter impl: breeze.linalg.argmax.Impl[breeze.linalg.Vector[Int],VR]
.map(e => (e._1, argmax(e._2)))
^
一些或多或少令人驚訝的意見:
- 的
sum(e._2)
似乎編譯得很好。 - 使用
DenseVector
代替SparseVector
內不會改變任何東西
我怎麼能解決這個問題,或者至少縮小的根本原因。
我覺得微風的代碼十分困難的導航,但我認爲該錯誤信息是很清楚。 argmax不能找到它需要的類型Vector。在argmax的實施看簡單地說,它似乎需要一個隱式類型'CanTraverseKeyValuePairs'它可以很容易地類型稀疏/密集矢量被發現的,但對於矢量沒有實現。 – melps
這可能是真實的,如果你有充分把握implicits的使用(在微風)。 – Carsten
說實話,它使用類型類時 – melps