Scala Breeze隐含CanMapValues

时间:2016-10-15 09:24:05

标签: scala matrix implicit scala-breeze

我在Scala中使用Breeze库进行矩阵操作。一切看起来都不错,但在编译时无法找到隐含的内容:

could not find implicit value for parameter bf: breeze.linalg.support.CanMapValues[breeze.linalg.Matrix[Int],Int,Double,That]

违规功能是:

import breeze.linalg._   // this is the only import
def writeMatrixToCsv(path: String, matrix: Matrix[Int]) = csvwrite(new File(path), matrix.mapValues(_.toDouble), separator = ',')

我不知道如何继续 - 我在Breeze代码中查找了默认的CanMapValues但却找不到它。我怎么解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:0)

要解决该问题,您可以向CanMapValues函数添加writeMatrixToCsv类型的隐式参数。然后它会编译。我可以看到Matrix是一个特征,它不提供一般隐式CanMapValues,因此您可能必须为具体矩阵提供一个,您将使用它。

def writeMatrixToCsv(path: String, matrix: Matrix[Int])(
  implicit bf:support.CanMapValues[Matrix[Int], Int, Double, Matrix[Double]]
) = csvwrite(
    new File(path),
    matrix.mapValues(_.toDouble),
    separator = ','
  )

CanMapValues位于support package object