Я хочу проверить несколько полей Person и вернуть проверенный объект со всеми связанными ошибками.Я использую 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()
Другое использование, реализация Эммануэля Нхана, также не компилируется с последней версией kotlin: https://github.com/enhan/validation-case/blob/master/src/main/kotlin/eu/enhan/validation/kotlin/sample.kt