Лучший способ обработать валидацию полей объекта => Either / Try (scala 2.10) / ValidationNEL (scalaz)

Позволять'Предполагается, что объект построен с использованием шаблона построителя.

Этот шаблон строителя будет содержатьbuild метод, сосредоточенный на проверке полей, а затем на преобразовании в целевой тип.

Эта проверка может быть реализована с использованием:

Either[FailureObject, TargetObject] типTry[TargetObject] (новая функция из Scala 2.10)Validation[FailureObject, TargetObject] или жеValidationNEL[FailureObject, TargetObject] из библиотеки скалаза

Я прочитал, что одно из главных преимуществValidation надEither типа этоValidation может накапливать неудачииз коробки ".

Но как насчет "новый» Try путь? Я заметил, чтоTry имеет "монадическая» методы из коробки также, как,mapflatMap и т.д ... то, что действительно отсутствовало в любом типе без помощи.Projection

Таким образом, яПредставляю, как каждый метод проверки поля возвращаетTry[FieldType] а точнее, в случае любого сбоя,Try[SpecificFieldExceptionType]; этот вложенный, содержащийString поле сообщения и поле rootCause, которое может быть накоплено на протяженииbuild метод.

Используя Scala 2.10, можно или нужноTry практика заменить библиотеку валидации скаляза для простой валидации, как это делает шаблон компоновщика?

**РЕДАКТИРОВАТЬ ****

ЧтениемTry Исходный код, звучит так, чтоTry Можно'Он накапливает несколько исключений и, таким образом, ориентирован на отказоустойчивость. ЧетноеTry.flatMapвозвращает потенциальный предыдущий сбой и так неПонятие накопления:

def flatMap[U](f: T => Try[U]): Try[U] = this.asInstanceOf[Try[U]]

НаоборотValidationNEL это обрабатывает функцию накопления.

Любое подтверждение?

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

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