scala/cats2
Validated
wefree
2023. 1. 19. 21:36
Validated 예제
import cats.data._
import cats.syntax.all._
object ValidatedTest {
def main(args: Array[String]): Unit = {
val x: ValidatedNel[String, Int] = 1.validNel[String] // 1.valid[NonEmptyList[String]]
val y: ValidatedNel[String, Int] = 2.validNel[String] // 2.valid[NonEmptyList[String]]
val e1: ValidatedNel[String, Int] = "error1".invalidNel[Int] // NonEmptyList.of("error1").invalid[Int]
val e2: ValidatedNel[String, Int] = "error2".invalidNel[Int] // NonEmptyList.of("error2").invalid[Int]
val validResult: Validated[NonEmptyList[String], Int] = x.combine(y) // Valid(3)
val validResult2: ValidatedNel[String, Int] = (x, y).mapN(_ + _) // Valid(3)
val invalidResult: ValidatedNel[String, Int] = x |+| y |+| e1 |+| e2 // Invalid(NonEmptyList(error1, error2))
val invalidResult2: ValidatedNel[String, Int] = List(x, y, e1, e2).reduce(_ |+| _) // Invalid(NonEmptyList(error1, error2))
}
}