如果析取具有正确的值,则执行短路并执行代码块的高阶函数方法

时间:2015-09-22 13:28:51

标签: scala scalaz

我关注def

def withAuthorized[T,U](t:T)(func: T => U) : U = func(t)

使用它是

 withAuthorized(methodReturningDisjunction){ res : \/[Throwable,Boolean] => 
    res match{
      case \/-(r) => { block of code }
      case -\/(e) => e.left 
    }

其中methodReturningDisjunction返回\/[Throwable,Boolean]

我想将res模式匹配逻辑抽象为withAuthorized方法,以便它接受代码块并仅在第一个defmethodReturningDisjunction)返回时执行right的{​​{1}}面。我想知道对disjunction进行哪些修改以使其以这种方式运行?

1 个答案:

答案 0 :(得分:2)

您正在寻找的是\/上的地图方法:

def withAuthorized[E,T,U](res:\/[E,T])(func: T => U) : \/[E,U] = res.map(func)