【发布时间】:2020-11-25 21:53:15
【问题描述】:
我有一个将二维数组作为参数的类。
case class Matrix(matrix: Array[Array[Double]]) {
def getRow(idx: Int): Array[Double] = matrix(idx)
def getColumn(idx: Int): Array[Double] = {
for{
row <- matrix
} yield row(idx)
}
}
事实证明,在 Scala 中不允许这样做:
val arr = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9))
val matrix = Matrix(arr)
编译错误:
类型不匹配;
找到:Array[Array[Int]]
必需:Array[Array[Double]]
我想创建一个类,其中所有可转换为双精度类型的矩阵都将隐式转换为双精度二维数组。而且我无法绕过它。这是我已经尝试过的:
case class Matrix(matrix: Array[Array[Double]]) {
implicit def convertToDouble(inputMatrix: Array[Array[Int]]): Array[Array[Double]] = {
for{
row <- matrix
} yield row.map(_.toDouble)
}
def getRow(idx: Int): Array[Double] = matrix(idx)
def getColumn(idx: Int): Array[Double] = {
for{
row <- matrix
} yield row(idx)
}
}
但它也不起作用,编译器仍然给出同样的错误。
【问题讨论】:
标签: scala type-conversion