Cats.validate、ValidatedNel[+E,+A]和Validated[+E,+A]有什么区别
Cats.validate, what's the difference between ValidatedNel[+E,+A] and Validated[+E,+A]
我正在学习如何使用 Cats.Validate
验证数据。
我不确定 ValidatedNel[+E,+A]
和 Validated[+E,+A]
之间有什么区别?
我知道 ValidatedNel
定义为:
type ValidatedNel[+E, +A] = Validated[NonEmptyList[E], A]
但是无论如何,Validated[NonEmptyList[E], A]
和 Validated[+E,+A]
有什么区别?
什么时候使用一种或另一种更好?在决定使用哪个时我必须考虑什么?
正如您已经正确提到的那样,ValidatedNel
只是 Validated
的类型别名。唯一的区别是你想如何收集你的验证 errors.With ValidateNel
错误将在 NonEmptyList
中收集,但是如果你想在类型级别上证明你将只有唯一的您可以定义自己的错误 type ValidatedNes[+E, +A] = Validated[NonEmptySet[E], A]
.
换句话说,您可以将 ValidatedNel
作为建议的默认验证结构,将 Validated
作为更底层的结构,用于 ValidatedNel
未涵盖的情况。
我正在学习如何使用 Cats.Validate
验证数据。
我不确定 ValidatedNel[+E,+A]
和 Validated[+E,+A]
之间有什么区别?
我知道 ValidatedNel
定义为:
type ValidatedNel[+E, +A] = Validated[NonEmptyList[E], A]
但是无论如何,Validated[NonEmptyList[E], A]
和 Validated[+E,+A]
有什么区别?
什么时候使用一种或另一种更好?在决定使用哪个时我必须考虑什么?
正如您已经正确提到的那样,ValidatedNel
只是 Validated
的类型别名。唯一的区别是你想如何收集你的验证 errors.With ValidateNel
错误将在 NonEmptyList
中收集,但是如果你想在类型级别上证明你将只有唯一的您可以定义自己的错误 type ValidatedNes[+E, +A] = Validated[NonEmptySet[E], A]
.
换句话说,您可以将 ValidatedNel
作为建议的默认验证结构,将 Validated
作为更底层的结构,用于 ValidatedNel
未涵盖的情况。