【发布时间】:2019-07-06 18:08:57
【问题描述】:
我想验证一个 Person 的多个字段并返回一个包含所有相关错误的 Validated 对象。我使用 kotlin 版本 1.3.41 和箭头 0.8.2。
我有以下课程:
class Person(id: Long, name: String)
sealed class PersonError {
data class InvalidId(val field: String) : PersonError()
data class InvalidName(val field: String) : PersonError()
}
所以,当我进行验证时,我想要返回以下结果类型:
Validated<List<PersonError>, Person>
箭头库文档并没有真正的帮助,因为我是函数式编程的新手。视频中的示例没有使用最新的箭头版本编译,它需要一个半群:
Validated.applicative<PersonError>(**SEMIGROUP**).map(vId, vName, { id, name
Person(id, name)
}).ev()
另一个用途,Emmanuel Nhan 的实现,也不能用最新的 kotlin 版本编译:https://github.com/enhan/validation-case/blob/master/src/main/kotlin/eu/enhan/validation/kotlin/sample.kt
【问题讨论】:
标签: kotlin kotlin-coroutines arrow-kt