如何转换
val source: Map[MyKeyType, ValidationNel[MyErrorType, MyValueType]]
到
val target: ValidationNel[MyErrorType, Map[MyKeyType, MyValueType]]
同时捕获所有验证错误?
答案 0 :(得分:3)
如果您有两件事情,可以使用sequence
将类型F[G[A]]
翻出来(即进入G[F[A]]
):Applicative
G
个实例和Traverse
的{{1}}实例。在这种情况下,Scalaz提供现成的,因此您只需编写F
(source.sequenceU
部分表示这是一种使用U
技巧来帮助Scala类型推断的方法系统)。
例如:
Unapply
错误将按预期累积。
答案 1 :(得分:2)
您想要sequenceU
:
val target = source.sequenceU