使部分函数完整

kek*_*coh 2 functional-programming scala

是否有完成部分功能的标准方法PartialFunction[A, B]?像这样的东西:

completePartialFunction(pf: PartialFunction[A, B], z: B): A => B
Run Code Online (Sandbox Code Playgroud)

或者

completePartialFunction2(pf: PartialFunction[A, B], f: A => B): A => B
Run Code Online (Sandbox Code Playgroud)

And*_*cus 6

您可以使用lift方法 on PartialFunction,返回Option[B]. 因此,当未为输入定义函数时,None将返回。您可以在scaladocs 中找到更多信息

当你使用的是在我脑海中的其他解决方案是scalaz。然后,您可以检查是否为参数定义了函数,如果没有,empty则从Monoid[B]您应该(可能隐式地)传递给 的 返回completePartialFunction


Mat*_*ndt 5

是的,其实很简单:

  def complete[A, B](pf: PartialFunction[A, B])(f: A => B): A => B =
    pf.applyOrElse(_, f)
Run Code Online (Sandbox Code Playgroud)