我有存储不同类型矩阵的代码,例如m1: Array[Array[Double]], m2: List[List[Int]]
. 正如所见,这些矩阵都存储为一系列行。任何行都很容易检索,但在我看来,列需要遍历矩阵。我想编写一个非常通用的函数,它从这两种类型的矩阵中返回一列。我已经以多种方式编写了此内容,其中最新的是:
/* 获取存储在行中的任意矩阵的列 */
private def column(M: Seq[Seq[Any]], n: Int, c: Seq[Any] = List(),
i: Int = 0): List[Any] = {
if (i != M.size) column(M, n, c :+ M(i)(n), i+1) else c.toList
这可以编译,但它不起作用:当我尝试传入 Array[Array[Double]] 时出现类型不匹配。我也试过用一些视图边界来写这个,即
private def column[T1 <% Seq[Any], T2 <% Seq[T1]] ...
但这也没有结果。为什么我写的第一个代码段不起作用?做这个的最好方式是什么?