Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Case class について便利なテクニック #2

Open
ryuhei-mori opened this issue Oct 2, 2018 · 0 comments
Open

Case class について便利なテクニック #2

ryuhei-mori opened this issue Oct 2, 2018 · 0 comments

Comments

@ryuhei-mori
Copy link
Contributor

行列を表現するのに 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 のようにアクセスすることもできます。ここで cMatrix 型とします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant