Packages

sealed abstract class Validated[+E, +A] extends Product with Serializable

Source
Validated.scala
Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Validated
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def canEqual(that: Any): Boolean
    Definition Classes
    Equals
  2. abstract def productArity: Int
    Definition Classes
    Product
  3. abstract def productElement(n: Int): Any
    Definition Classes
    Product

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def ===[EE >: E, AA >: A](that: Validated[EE, AA])(implicit EE: Eq[EE], AA: Eq[AA]): Boolean

    Example:

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = "error".invalid[Int]
    scala> val v3 = 123.valid[String]
    scala> val v4 = 456.valid[String]
    
    scala> v1 === v2
    res0: Boolean = true
    
    scala> v1 === v3
    res1: Boolean = false
    
    scala> v3 === v4
    res3: Boolean = false
  5. def andThen[EE >: E, B](f: (A) ⇒ Validated[EE, B]): Validated[EE, B]

    Apply a function (that returns a Validated) in the valid case.

    Apply a function (that returns a Validated) in the valid case. Otherwise return the original Validated.

    This allows "chained" validation: the output of one validation can be fed into another validation function.

    This function is similar to flatMap on Either. It's not called flatMap, because by Cats convention, flatMap is a monadic bind that is consistent with ap. This method is not consistent with ap (or other Apply-based methods), because it has "fail-fast" behavior as opposed to accumulating validation failures.

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    scala> val f: Int => Validated[String, List[Int]] = List(_).valid[String]
    
    scala> v1.andThen(f)
    res0: Validated[String, List[Int]] = Invalid(error)
    
    scala> v2.andThen(f)
    res1: Validated[String, List[Int]] = Valid(List(123))
  6. def ap[EE >: E, B](f: Validated[EE, (A) ⇒ B])(implicit EE: Semigroup[EE]): Validated[EE, B]

    From Apply: if both the function and this value are Valid, apply the function

    From Apply: if both the function and this value are Valid, apply the function

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    scala> val f: Validated[String, Int => Option[Int]] = (Option.apply[Int] _).valid[String]
    
    scala> v1.ap(f)
    res0: Validated[String, Option[Int]] = Invalid(error)
    
    scala> v2.ap(f)
    res1: Validated[String, Option[Int]] = Valid(Some(123))
  7. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  8. def bimap[EE, AA](fe: (E) ⇒ EE, fa: (A) ⇒ AA): Validated[EE, AA]

    Validated is a Bifunctor, this method applies one of the given functions.]

    Validated is a Bifunctor, this method applies one of the given functions.]

    Example:

    scala> import cats.implicits._
    
    scala> val v1: Validated[String, Int] = "error".invalid[Int]
    scala> val v2: Validated[String, Int] = 123.valid[String]
    
    scala> v1.bimap(List(_), Option(_))
    res0: Validated[List[String], Option[Int]] = Invalid(List(error))
    
    scala> v2.bimap(List(_), Option(_))
    res1: Validated[List[String] ,Option[Int]] = Valid(Some(123))
  9. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @IntrinsicCandidate()
  10. def combine[EE >: E, AA >: A](that: Validated[EE, AA])(implicit EE: Semigroup[EE], AA: Semigroup[AA]): Validated[EE, AA]

    Combine this Validated with another Validated, using the Semigroup instances of the underlying E and A instances.

    Combine this Validated with another Validated, using the Semigroup instances of the underlying E and A instances. The resultant Validated will be Valid, if, and only if, both this Validated instance and the supplied Validated instance are also Valid.

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalidNel[List[Int]]
    scala> val v2 = "error2".invalidNel[List[Int]]
    scala> val v3 = List(123).validNel[String]
    scala> val v4 = List(456).validNel[String]
    
    scala> v1 combine v2
    res0: Validated[NonEmptyList[String], List[Int]] = Invalid(NonEmptyList(error, error2))
    
    scala> v2 combine v3
    res1: Validated[NonEmptyList[String], List[Int]] = Invalid(NonEmptyList(error2))
    
    scala> v3 combine v4
    res2: Validated[NonEmptyList[String], List[Int]] = Valid(List(123, 456))
  11. def compare[EE >: E, AA >: A](that: Validated[EE, AA])(implicit EE: Order[EE], AA: Order[AA]): Int

    Example:

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = "error2".invalid[Int]
    scala> val v3 = 123.valid[String]
    scala> val v4 = 456.valid[String]
    scala> val v5 = v4
    
    scala> v1 compare v2
    res0: Int = -1
    
    scala> v1 compare v3
    res1: Int = -1
    
    scala> v3 compare v1
    res3: Int = 1
    
    scala> v3 compare v4
    res4: Int = -1
    
    scala> v4 compare v5
    res5: Int = 0
  12. def ensure[EE >: E](onFailure: ⇒ EE)(f: (A) ⇒ Boolean): Validated[EE, A]

    Ensure that a successful result passes the given predicate, falling back to an Invalid of onFailure if the predicate returns false.

    Ensure that a successful result passes the given predicate, falling back to an Invalid of onFailure if the predicate returns false.

    For example:

    scala> Validated.valid("").ensure(new IllegalArgumentException("Must not be empty"))(_.nonEmpty)
    res0: Validated[IllegalArgumentException, String] = Invalid(java.lang.IllegalArgumentException: Must not be empty)
  13. def ensureOr[EE >: E](onFailure: (A) ⇒ EE)(f: (A) ⇒ Boolean): Validated[EE, A]

    Ensure that a successful result passes the given predicate, falling back to the an Invalid of the result of onFailure if the predicate returns false.

    Ensure that a successful result passes the given predicate, falling back to the an Invalid of the result of onFailure if the predicate returns false.

    For example:

    scala> Validated.valid("ab").ensureOr(s => new IllegalArgumentException("Must be longer than 3, provided '" + s + "'"))(_.length > 3)
    res0: Validated[IllegalArgumentException, String] = Invalid(java.lang.IllegalArgumentException: Must be longer than 3, provided 'ab')
  14. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  15. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  16. def exists(predicate: (A) ⇒ Boolean): Boolean

    Is this Valid and matching the given predicate

    Is this Valid and matching the given predicate

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = List("error").invalid[Int]
    scala> val v2 = 123.valid[List[String]]
    
    scala> v1.exists(_ > 120)
    res0: Boolean = false
    
    scala> v2.exists(_ > 120)
    res1: Boolean = true
  17. def findValid[EE >: E, AA >: A](that: ⇒ Validated[EE, AA])(implicit EE: Semigroup[EE]): Validated[EE, AA]

    If this is valid return this, otherwise if that is valid return that, otherwise combine the failures.

    If this is valid return this, otherwise if that is valid return that, otherwise combine the failures. This is similar to orElse except that here failures are accumulated.

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = List("error1").invalid[Int]
    scala> val v2 = 123.valid[List[String]]
    scala> val default1 = List("error2").invalid[Int]
    scala> val default2 = 456.valid[List[String]]
    
    scala> v1.findValid(default1)
    res0: Validated[List[String], Int] = Invalid(List(error1, error2))
    
    scala> v1.findValid(default2)
    res1: Validated[List[String], Int] = Valid(456)
    
    scala> v2.findValid(default1)
    res2: Validated[List[String], Int] = Valid(123)
  18. def fold[B](fe: (E) ⇒ B, fa: (A) ⇒ B): B

    Example:

    Example:

    scala> import cats.implicits._
    
    scala> val v1= "error".invalid[Option[String]]
    scala> val v2= Some("abc").valid[String]
    
    scala> v1.fold(identity,_.getOrElse(""))
    res0: String = error
    
    scala> v2.fold(identity,_.getOrElse(""))
    res1: String = abc
  19. def foldLeft[B](b: B)(f: (B, A) ⇒ B): B

    apply the given function to the value with the given B when valid, otherwise return the given B

    apply the given function to the value with the given B when valid, otherwise return the given B

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.foldLeft(456)(_ + _)
    res0: Int = 456
    
    scala> v2.foldLeft(456)(_ + _)
    res1: Int = 579
  20. def foldRight[B](lb: Eval[B])(f: (A, Eval[B]) ⇒ Eval[B]): Eval[B]

    Lazily-apply the given function to the value with the given B when valid, otherwise return the given B.

    Lazily-apply the given function to the value with the given B when valid, otherwise return the given B.

    Example:

    scala> import cats.implicits._
    scala> import cats.Eval
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.foldRight(Eval.now(456))((i,e) => e.map(_ + i))
    res0: Eval[Int] = Now(456)
    
    scala> v2.foldRight(Eval.now(456))((i,e) => e.map(_ + i)).value
    res1: Int = 579
  21. def forall(f: (A) ⇒ Boolean): Boolean

    Is this Invalid or matching the predicate

    Is this Invalid or matching the predicate

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = Some("error").invalid[Int]
    scala> val v2 = 123.valid[Option[String]]
    
    scala> v1.forall(_ > 150)
    res0: Boolean = true
    
    scala> v2.forall(_ > 150)
    res1: Boolean = false
  22. def foreach(f: (A) ⇒ Unit): Unit

    Run the side-effecting function on the value if it is Valid

  23. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  24. def getOrElse[B >: A](default: ⇒ B): B

    Return the Valid value, or the default if Invalid

    Return the Valid value, or the default if Invalid

    Example:

    scala> import cats.implicits._
    
    scala> val v1= "error".invalid[Int]
    scala> val v2= 123.valid[String]
    
    scala> v1.getOrElse(456)
    res0: Int = 456
    
    scala> v2.getOrElse(456)
    res1: Int = 123
  25. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  26. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  27. def isInvalid: Boolean

    Example:

    Example:

    scala> import cats.implicits._
    
    scala> val validated= "error".invalid[Unit]
    scala> validated.isInvalid
    res0: Boolean = true
  28. def isValid: Boolean

    Example:

    Example:

    scala> import cats.implicits._
    
    scala> val validated= "error".invalid[Unit]
    scala> validated.isValid
    res0: Boolean = false
  29. def leftMap[EE](f: (E) ⇒ EE): Validated[EE, A]

    Apply a function to an Invalid value, returning a new Invalid value.

    Apply a function to an Invalid value, returning a new Invalid value. Or, if the original valid was Valid, return it.

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.leftMap(Option.apply)
    res0: Validated[Option[String], Int] = Invalid(Some(error))
    
    scala> v2.leftMap(Option.apply)
    res1: Validated[Option[String], Int] = Valid(123)
  30. def map[B](f: (A) ⇒ B): Validated[E, B]

    Apply a function to a Valid value, returning a new Valid value

    Apply a function to a Valid value, returning a new Valid value

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.map(_ * 2)
    res0: Validated[String, Int] = Invalid(error)
    
    scala> v2.map(_ * 2)
    res1: Validated[String, Int] = Valid(246)
  31. def merge[EE >: E](implicit ev: <:<[A, EE]): EE

    Example:

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = Seq("error").invalid[List[String]]
    scala> val v2 = List("Ok").valid[Seq[String]]
    
    scala> v1.merge
    res0: Seq[String] = List(error)
    
    scala> v2.merge
    res1: Seq[String] = List(Ok)
  32. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  33. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  34. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  35. def orElse[EE, AA >: A](default: ⇒ Validated[EE, AA]): Validated[EE, AA]

    Return this if it is Valid, or else fall back to the given default.

    Return this if it is Valid, or else fall back to the given default. The functionality is similar to that of findValid except for failure accumulation, where here only the error on the right is preserved and the error on the left is ignored.

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = Some("error").invalid[Int]
    scala> val v2 = 123.valid[Option[String]]
    scala> val defaultValidated = 456.valid[Option[String]]
    
    scala> v1.orElse(defaultValidated)
    res0: Validated[Option[String], Int] = Valid(456)
    
    scala> v2.orElse(defaultValidated)
    res1: Validated[Option[String], Int] = Valid(123)
  36. def partialCompare[EE >: E, AA >: A](that: Validated[EE, AA])(implicit EE: PartialOrder[EE], AA: PartialOrder[AA]): Double
  37. def product[EE >: E, B](fb: Validated[EE, B])(implicit EE: Semigroup[EE]): Validated[EE, (A, B)]

    From Product

    From Product

    Example:

    scala> import cats.implicits._
    scala> import cats.data.ValidatedNec
    
    scala> val v1 = "error".invalidNec[Int]
    scala> val v2 = "error2".invalidNec[Int]
    scala> val v3 = 123.validNec[String]
    scala> val v4 = 456.validNec[String]
    
    scala> v1.product(v2)
    res0: ValidatedNec[String, (Int, Int)] = Invalid(Chain(error, error2))
    
    scala> v1.product(v3)
    res1: ValidatedNec[String, (Int, Int)] = Invalid(Chain(error))
    
    scala> v3.product(v4)
    res2: ValidatedNec[String, (Int, Int)] = Valid((123,456))
  38. def productIterator: Iterator[Any]
    Definition Classes
    Product
  39. def productPrefix: String
    Definition Classes
    Product
  40. def show[EE >: E, AA >: A](implicit EE: Show[EE], AA: Show[AA]): String
  41. def swap: Validated[A, E]

    Example:

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.swap
    res0: Validated[Int, String] = Valid(error)
    
    scala> v2.swap
    res1: Validated[Int, String] = Invalid(123)
  42. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  43. def toEither: Either[E, A]

    Converts the value to an Either[E, A]

    Converts the value to an Either[E, A]

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.toEither
    res0: Either[String, Int] = Left(error)
    
    scala> v2.toEither
    res1: Either[String, Int] = Right(123)
  44. def toIor: Ior[E, A]

    Returns Valid values wrapped in Ior.Right, and None for Ior.Left values

    Returns Valid values wrapped in Ior.Right, and None for Ior.Left values

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.toIor
    res0: Ior[String, Int] = Left(error)
    
    scala> v2.toIor
    res1: Ior[String, Int] = Right(123)
  45. def toList: List[A]

    Convert this value to a single element List if it is Valid, otherwise return an empty List

    Convert this value to a single element List if it is Valid, otherwise return an empty List

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = Some("error").invalid[Int]
    scala> val v2 = 123.valid[Option[String]]
    
    scala> v1.toList
    res0: List[Int] = List()
    
    scala> v2.toList
    res1: List[Int] = List(123)
  46. def toOption: Option[A]

    Returns Valid values wrapped in Some, and None for Invalid values

    Returns Valid values wrapped in Some, and None for Invalid values

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = List("error").invalid[Int]
    scala> val v2 = 123.valid[List[String]]
    
    scala> v1.toOption
    res0: Option[Int] = None
    
    scala> v2.toOption
    res1: Option[Int] = Some(123)
  47. def toString(): String
    Definition Classes
    AnyRef → Any
  48. def toValidatedNec[EE >: E, AA >: A]: ValidatedNec[EE, AA]

    Lift the Invalid value into a NonEmptyChain.

    Lift the Invalid value into a NonEmptyChain.

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.toValidatedNec
    res0: ValidatedNec[String, Int] = Invalid(Chain(error))
    
    scala> v2.toValidatedNec
    res1: ValidatedNec[String, Int] = Valid(123)
  49. def toValidatedNel[EE >: E, AA >: A]: ValidatedNel[EE, AA]

    Lift the Invalid value into a NonEmptyList.

    Lift the Invalid value into a NonEmptyList.

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.toValidatedNel
    res0: ValidatedNel[String, Int] = Invalid(NonEmptyList(error))
    
    scala> v2.toValidatedNel
    res1: ValidatedNel[String, Int] = Valid(123)
  50. def traverse[F[_], EE >: E, B](f: (A) ⇒ F[B])(implicit F: Applicative[F]): F[Validated[EE, B]]

    When Valid, apply the function, marking the result as valid inside the Applicative's context, when Invalid, lift the Error into the Applicative's context

    When Valid, apply the function, marking the result as valid inside the Applicative's context, when Invalid, lift the Error into the Applicative's context

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.traverse(Option.apply[Int])
    res0: Option[Validated[String, Int]] = Some(Invalid(error))
    
    scala> v2.traverse(Option.apply[Int])
    res1: Option[Validated[String, Int]] = Some(Valid(123))
  51. def valueOr[B >: A](f: (E) ⇒ B): B

    Return the Valid value, or the result of f if Invalid Example:

    Return the Valid value, or the result of f if Invalid Example:

    scala> import cats.implicits._
    
    scala> val v1 = Some("exception").invalid[String]
    scala> val v2 = "OK".valid[Option[String]]
    
    scala> v1.valueOr(_.getOrElse(""))
    res0: String = exception
    
    scala> v2.valueOr(_.getOrElse(""))
    res1: String = OK
  52. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  53. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  54. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  55. def withEither[EE, B](f: (Either[E, A]) ⇒ Either[EE, B]): Validated[EE, B]

    Convert to an Either, apply a function, convert back.

    Convert to an Either, apply a function, convert back. This is handy when you want to use the Monadic properties of the Either type.

    Example:

    scala> import cats.implicits._
    
    scala> val v1 = "error".invalid[Int]
    scala> val v2 = 123.valid[String]
    
    scala> v1.withEither(_.bimap(List(_), Option(_)))
    res0: Validated[List[String], Option[Int]] = Invalid(List(error))
    
    scala> v2.withEither(_.bimap(List(_), Option(_)))
    res1: Validated[List[String], Option[Int]] = Valid(Some(123))

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] ) @Deprecated
    Deprecated

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped