Scala社区.
目前我正在尝试使用猫ValidatedMonad 实现自定义模型/单参数验证.但是,从1.0开始删除笛卡尔积之后,我无法使用(v1 | @ | v2)map(f)并且无法编译我的代码:
import cats.Semigroupal
import cats.data.Validated.{Invalid, Valid}
import cats.data.{ValidatedNel, _}
import cats.implicits._
import cats.instances.all._
case class FieldErrorInfo(name: String, error: String)
type FieldName = String
type ValidationResult[A] = ValidatedNel[FieldErrorInfo, A]
trait SingleFieldValidationRule[U] extends ((U, FieldName) => ValidationResult[U])
trait ModelValidationRule[M] extends (M => ValidationResult[M])
object ValidateNameRule extends SingleFieldValidationRule[String] {
override def apply(v1: String, name: String): ValidationResult[String] = {
if (v1.contains("cats"))
v1.validNel
else
FieldErrorInfo(name, "Some Error").invalidNel
}
}
object ValidateQuantityRule extends SingleFieldValidationRule[Int] {
override def apply(v1: …Run Code Online (Sandbox Code Playgroud)