抽出子
=
Extractor
Scalaのmatch式
で使うオブジェクト。値を分解して取り出す仕組みを提供する。
実態は
unapply:Option[T]
メソッドを持つオブジェクト
これがSomeを返せばマッチ成功・変数束縛、Noneなら次へ、という感じの動きになる
object に手動で unapply を書くと、
Case Class
なしで
任意の判定ロジックを
パターンマッチ
に持ち込める
具体例:
NonFatal
Q. なんで
unapply
?
コンパニオンオブジェクト
の
apply
メソッドは、値からオブジェクトを作るコンストラクタのようなもの。
つまり 値 → オブジェクト
Scalaのmatch式
の値比較では、オブジェクトから中身の値を取り出して判定する
つまり オブジェクト → 値。逆だよね。applyの逆だからunapply。