がある限り、PartialFunction[X,R]
それを返す関数に変換するのは非常に簡単ですOption[R]
。
def pfToOptf[X, R](f: PartialFunction[X,R])(x: X) =
if (f.isDefinedAt(x)) Some(f(x))
else None
ただし、タスクが逆の場合はどうなるでしょうか。引数としてf
取得し、結果として返す関数があるとします。そして、私はそれを作りたいと思っています。最善の方法は何ですか?X
Option[R]
PartialFunction[X,R]
私が思いついたものは、私の好みにはかなり醜く見えます:
def optfToPf[X,R](f: X => Option[R]) : PartialFunction[X,R] = {
object extractor {
def unapply(x: X): Option[R] = f(x)
}
{ case extractor(r) => r }
}
私が逃したより良い方法はありますか?