行列を表現するのに case class を使っている人が多いですが、行列の成分を受けとるのに選択肢が1つだけのパターンマッチを使っている人が多いです。そのような場合には構造化代入(destructing binding)というテクニックが使えます。例えば
case class Matrix(a11: BigInt, a12: BigInt, a21: BigInt, a22: BigInt)
def mult(a: Matrix, b: Matrix): Matrix = {
a match = { case Matrix(x, y, z, w) => /* なにか計算 */ }
}
というプログラムは
def mult(a: Matrix, b: Matrix): Matrix = {
val Matrix(x, y, z, w) = a
/* なにか計算 */
}
と書くことができます。また case class のメンバ変数には c.a22 のようにアクセスすることもできます。ここで c は Matrix 型とします。
行列を表現するのに case class を使っている人が多いですが、行列の成分を受けとるのに選択肢が1つだけのパターンマッチを使っている人が多いです。そのような場合には構造化代入(destructing binding)というテクニックが使えます。例えば
というプログラムは
と書くことができます。また case class のメンバ変数には
c.a22のようにアクセスすることもできます。ここでcはMatrix型とします。