我才刚刚开始学习Scala和Flink。当我尝试按以下方式运行演示代码时:
private def demoFunction[T <: Vector](dataSet: DataSet[T])
: DataSet[(linalg.Vector[Double], linalg.Vector[Double])] = {
val metrics = dataSet.map{
v => (1.0, v.asBreeze, linalg.Vector.zeros[Double](v.size))
}.reduce{
// reduce code..
}
// ...
}
我得到了错误信息:
Error: missing parameter type v => (1.0, v.asBreeze, linalg.Vector.zeros[Double](v.size))
依赖关系如下:
如果您有任何想法,请提供帮助。预先感谢。
12月12日更新。
我在 v 之后添加了:T 后解决了这个问题,似乎可以弄清 v 是哪种类型。但是我仍然对此感到困惑。
val metrics = dataSet.map{
v:T => (1.0, v.asBreeze, linalg.Vector.zeros[Double](v.size))
}// ...
答案 0 :(得分:0)
如果Vector
中的T <: Vector
与linalg.Vector
相同,则它使用类型参数
trait Vector[@spec(Int, Double, Float) V] extends VectorLike[V, Vector[V]] {
...
因此它不能只是T <: Vector
,而应该是T <: Vector[...something...]
。
如果Vector
中的T <: Vector
与linalg.Vector
不同,那么您import breeze.linalg._
和Vector
可能被解析为linalg.Vector
。因此,请使用完全限定的名称
private def demoFunction[T <: yourpackage.yoursubpackage.Vector] ...