如果我有一个\/[Errs, \/[Errs, Boolean]]
类型,并希望合并两个左侧(两个Errs
),那么最好的方法是\/[Errs,Boolean]
新的Errs
将从早期类型中的两个Errs
附加两个lefts
。 Errs
只是case class
case class Errs(errors: List[Err])
Err
是
case class Err(exceptionMessage: String, customMessage: String, statusCode: Int, extraInfo: Option[String] = None)
我正在尝试将type1 = \/[Errs, \/[Errs,Boolean]]
转换为type2 = \/[Errs,Boolean]
,Errs
中的type2
应该是"合并" Errs
(不会因合并两个析取而丢失任何left
个信息。
答案 0 :(得分:1)
为了完整起见:因为这是一个分离,你永远不必担心“合并”错误 - 要么整个事情是左边的Errs
,要么是右边的左边是Errs
。它不可能同时存在。
如果您要折叠这两个级别,t1.flatMap(identity)
会将Errs \/ (Errs \/ Boolean)
变为普通的Errs \/ Boolean
。