さまざまなタイプの行列を格納するコードがあります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]] ...
しかし、これも実りがありませんでした。最初に書いたコード セグメントが機能しないのはなぜですか? これを行う最善の方法は何ですか?