我想验证一个 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 /样本.kt