【问题标题】:Convert List[Task[Boolean]] to EitherT[Task, Throwable, Unit]将 List[Task[Boolean]] 转换为 EitherT[Task, Throwable, Unit]
【发布时间】:2016-11-07 14:12:21
【问题描述】:

我有一个List[Task[Boolean]],我需要把它变成一个EitherT[Task, Throwable, Unit]

我有一个可能的解决方案是

EitherT(Task.delay(if (!allAsserts.contains(false)) \/-(()) else -\/(new Exception("BOOM"))))

但我想知道是否可以在不显式调用Task.delay 的情况下创建EitherT

也许上面的代码是正确的,但我只是想知道是否有替代方案。

【问题讨论】:

    标签: scala scalaz


    【解决方案1】:

    也许是这个?

    lazy val toDisjuction: List[Boolean] => \/[Throwable, Unit] = list =>
      if (list.forall(_ == true)) \/-(()) else -\/(new Exception("BOOM"))
    
    val ltb: List[Task[Boolean]] = ???
    
    EitherT(Task.gatherUnordered(ltb) map toDisjunction)
    

    我想这就是我一直在寻找的……

    【讨论】:

      猜你喜欢
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多