0
我想將矢量序列作爲矩陣處理。顯然我們有兩個需要區分的案例。它是一個行向量序列還是它是一個列向量序列。但是矢量本身可以是任何分數類型的。所以,我已經試過這樣:如何正確使用TypeTag如果要匹配的類型也需要類型參數
implicit class MatrixEvent[K: Ordering, V: Fractional, T <: VectorEvent[K, V]](x: Seq[T])(implicit tag: TypeTag[T]) {
lazy val mx = tag.tpe match {
case t if t =:= typeOf[ColumnVectorEvent[K, V]] =>
x.zipWithIndex.foldLeft(new Array2DRowRealMatrix(x(0).vector.getRowDimension, x.length))({case (mx, (vec, idx)) => {
mx.setColumnVector(idx, vec.vector.getColumnVector(0))
mx
}})
case t if t =:= typeOf[RowVectorEvent[K, V]] =>
x.zipWithIndex.foldLeft(new Array2DRowRealMatrix(x.length, x(0).vector.getColumnDimension))({case (mx, (vec, idx)) => {
mx.setRowVector(idx, vec.vector.getRowVector(0))
mx
}})
}
}
但Scala編譯器不喜歡這種很:
Error:(52, 29) No TypeTag available for ColumnVectorEvent[K,V]
case t if t =:= typeOf[ColumnVectorEvent[K, V]] =>
您只在外部類型上匹配嗎?那麼你可以使用'ClassTag'。 – Kolmar