我有两个验证方法:
fun a(s:String): Validated<Error, SomeEnum> {
}
fun b(s:String): Validated<Error, OtherEnum> {
}
我想压缩这两个验证方法并做这样的事情:
a(s1).zip(b(s2) { (r1, r2) -> Pair(r1, r2) }
但是Kotlin在zip参数列表中抱怨类型不匹配:
要求:Semigroup
发现:Validated<Error,>
对于传递的lambda有这样的错误信息:
Required: Validated<TypeVariable(E),>
发现:ERROR ->TypeVariable (_L)
然而,当我将Validated
更改为ValidatedNel
时,我有关于多个实现匹配传递的参数的错误。当我检查编译器无法选择的实现时,我有以下这些:
zip(ValidatedNel<E,B>, (A,B) -> Z)
zip(Semigroup<E>, ValidatedNel<E, B>)
然而,当我使用下面的实现Kotlin没有抱怨,但返回' Validated '没有错误列表。
a(s1).zip(nonEmptyList(), b(s2))
结果是我必须去掉lambda中的括号所以我的zip应该是这样的:
a(s1).zip(b(s2)) { r1, r2 -> Pair(r1, r2) }