2020/03/29
10時前起床
AM10:05起床
Scala
ケースクラスとunapply
おさらいとして以下を見る.
scala> case class Word(word: String) defined class Word scala> Word("Wow!") match { case Word(word) => println(word) } Wow!
このように,ケースクラスはパターンマッチにおいて型をマッチして中のwordをcase句の式で取り出して利用することができた.このときのWordは抽出子という.
これはcase classが内部でunapplyというメソッドを実装しているから利用可能である.したがって通常のクラスでもunapply
を利用すれば抽出子として利用可能になる.
簡単な実装としてはclassを定義した後に,object
の中でunapplyとして取り出す.注意点としてunapplyメソッドはOption型の戻り値を返す必要がある.
型エイリアスtype
type Entry = (Int, String)
リフレクション
プログラムのコード自体からクラスやメソッドなどの型の概念を操作するテクニック.とあるが難しかったので復習が必要そう.
マクロ
これもむずいので復習が必要.