абсолютно разумно

приведен мой случай использования

Я используюкоты для проверки моего конфига. Мой конфигурационный файл находится в формате json.Я десериализовал мой конфигурационный файл в мой класс делConfig с помощьюподъемная JSON а затем проверить это с помощью кошек. Я используюэто в качестве руководства.Мой мотив использования Cats - собирать все ошибки, если они присутствуют на момент проверки.

Моя проблема - примеры, приведенные в руководстве, относятся к типу

case class Person(name: String, age: Int)

def validatePerson(name: String, age: Int): ValidationResult[Person] = {
   (validateName(name),validate(age)).mapN(Person)
}

Но в моем случае я уже десериализовал мою конфигурацию в свой класс case (ниже приведен пример), а затем я передаю его для проверки

case class Config(source: List[String], dest: List[String], extra: List[String])

def vaildateConfig(config: Config): ValidationResult[Config] = {
  (validateSource(config.source), validateDestination(config.dest))
   .mapN { case _ => config }
}

Разница здесьmapN { case _ => config }, Поскольку у меня уже есть конфиг, если все верно, я не хочу создавать конфиг заново из его членов. Это возникает, когда я передаю конфигурацию для проверки функции, а не ее членов.

Человек на моем рабочем месте сказал мне, что это неправильный путь, поскольку Cats Validated предоставляет способ создания объекта, если его члены допустимы. Объект не должен существовать или не должен быть конструктивным, если его члены недопустимы. Что имеет для меня полный смысл.

Так я должен внести какие-либо изменения? Вышеизложенное я делаю приемлемо?

PS: Приведенный выше Config является лишь примером, мой реальный конфиг может иметь другие классы case в качестве своих членов, которые сами могут зависеть от других классов case.

Ответы на вопрос(1)

Ваш ответ на вопрос