Bad

org.scalactic.Bad
final case class Bad[+B](b: B) extends Or[Nothing, B]

Contains a “bad” value.

You can decide what “bad” means, but it is expected Bad will be commonly used to hold descriptions of an error (or several, accumulated errors). Some examples of possible error descriptions are String error messages, Int error codes, Throwable exceptions, or instances of a case class hierarchy designed to describe errors.

Value parameters

b

the “bad” value

Attributes

Source
Or.scala
Graph
Supertypes
class Or[Nothing, B]
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Members list

Value members

Concrete methods

def accumulating: Or[Nothing, One[B]]

Converts this Or to an Or with the same Good type and a Bad type consisting of One parameterized by this Or's Bad type.

Converts this Or to an Or with the same Good type and a Bad type consisting of One parameterized by this Or's Bad type.

For example, invoking the accumulating method on an Int Or ErrorMessage would convert it to an Int Or One[ErrorMessage]. This result type, because the Bad type is an Every, can be used with the mechanisms provided in trait Accumulation to accumulate errors.

Note that if this Or is already an accumulating Or, the behavior of this accumulating method does not change. For example, if you invoke accumulating on an Int Or One[ErrorMessage] you will be rewarded with an Int Or One[One[ErrorMessage]].

Attributes

Returns

this Good, if this Or is a Good; or this Bad value wrapped in a One if this Or is a Bad.

Source
Or.scala
def badMap[C](f: B => C): Or[Nothing, C]

Maps the given function to this Or's value if it is a Bad or returns this if it is a Good.

Maps the given function to this Or's value if it is a Bad or returns this if it is a Good.

Value parameters

f

the function to apply

Attributes

Returns

if this is a Bad, the result of applying the given function to the contained value wrapped in a Bad, else this Good is returned

Source
Or.scala
def exists(p: Nothing => Boolean): Boolean

Returns true if this Or is a Good and the predicate p returns true when applied to this Good's value.

Returns true if this Or is a Good and the predicate p returns true when applied to this Good's value.

Note: The exists method will return the same result as forall if this Or is a Good, but the opposite result if this Or is a Bad.

Value parameters

p

the predicate to apply to the Good value, if this is a Good

Attributes

Returns

the result of applying the passed predicate p to the Good value, if this is a Good, else false

Source
Or.scala
def filter[C >: B](f: Nothing => Validation[C]): Or[Nothing, C]

Returns this Or if either 1) it is a Bad or 2) it is a Good and applying the validation function f to this Good's value returns Pass; otherwise, returns a new Bad containing the error value contained in the Fail resulting from applying the validation function f to this Good's value.

Returns this Or if either 1) it is a Bad or 2) it is a Good and applying the validation function f to this Good's value returns Pass; otherwise, returns a new Bad containing the error value contained in the Fail resulting from applying the validation function f to this Good's value.

For examples of filter used in for expressions, see the main documentation for trait Validation.

Value parameters

f

the validation function to apply

Attributes

Returns

a Good if this Or is a Good that passes the validation function, else a Bad.

Source
Or.scala
def flatMap[H, C >: B](f: Nothing => Or[H, C]): Or[H, C]

Returns the given function applied to the value contained in this Or if it is a Good, or returns this if it is a Bad.

Returns the given function applied to the value contained in this Or if it is a Good, or returns this if it is a Bad.

Value parameters

f

the function to apply

Attributes

Returns

if this is a Good, the result of applying the given function to the contained value wrapped in a Good, else this Bad is returned

Source
Or.scala
def fold[V](gf: Nothing => V, bf: B => V): V

Folds this Or into a value of type V by applying the given gf function if this is a Good else the given bf function if this is a Bad.

Folds this Or into a value of type V by applying the given gf function if this is a Good else the given bf function if this is a Bad.

Value parameters

bf

the function to apply to this Or's Bad value, if it is a Bad

gf

the function to apply to this Or's Good value, if it is a Good

Attributes

Returns

the result of applying the appropriate one of the two passed functions, gf or bf, to this Or's value

Source
Or.scala
def forall(p: Nothing => Boolean): Boolean

Returns true if either this Or is a Bad or if the predicate p returns true when applied to this Good's value.

Returns true if either this Or is a Bad or if the predicate p returns true when applied to this Good's value.

Note: The forall method will return the same result as exists if this Or is a Good, but the opposite result if this Or is a Bad.

Value parameters

p

the predicate to apply to the Good value, if this is a Good

Attributes

Returns

the result of applying the passed predicate p to the Good value, if this is a Good, else true

Source
Or.scala
def foreach(f: Nothing => Unit): Unit

Applies the given function f to the contained value if this Or is a Good; does nothing if this Or is a Bad.

Applies the given function f to the contained value if this Or is a Good; does nothing if this Or is a Bad.

Value parameters

f

the function to apply

Attributes

Source
Or.scala
def get: Nothing

Returns the Or's value if it is a Good or throws NoSuchElementException if it is a Bad.

Returns the Or's value if it is a Good or throws NoSuchElementException if it is a Bad.

Attributes

Returns

the contained value if this is a Good

Throws
NoSuchElementException

if this is a Bad

Source
Or.scala
def getOrElse[H](default: => H): H

Returns, if this Or is Good, this Good's value; otherwise returns the result of evaluating default.

Returns, if this Or is Good, this Good's value; otherwise returns the result of evaluating default.

Value parameters

default

the default expression to evaluate if this Or is a Bad

Attributes

Returns

the contained value, if this Or is a Good, else the result of evaluating the given default

Source
Or.scala
def map[H](f: Nothing => H): Or[H, B]

Maps the given function to this Or's value if it is a Good or returns this if it is a Bad.

Maps the given function to this Or's value if it is a Good or returns this if it is a Bad.

Value parameters

f

the function to apply

Attributes

Returns

if this is a Good, the result of applying the given function to the contained value wrapped in a Good, else this Bad is returned

Source
Or.scala
def orElse[H, C >: B](alternative: => Or[H, C]): Or[H, C]

Returns this Or if it is a Good, otherwise returns the result of evaluating the passed alternative.

Returns this Or if it is a Good, otherwise returns the result of evaluating the passed alternative.

Value parameters

alternative

the alternative by-name to evaluate if this Or is a Bad

Attributes

Returns

this Or, if it is a Good, else the result of evaluating alternative

Source
Or.scala
def recover[H](f: B => H): Or[H, B]

Maps the given function to this Or's value if it is a Bad, transforming it into a Good, or returns this if it is already a Good.

Maps the given function to this Or's value if it is a Bad, transforming it into a Good, or returns this if it is already a Good.

Value parameters

f

the function to apply

Attributes

Returns

if this is a Bad, the result of applying the given function to the contained value wrapped in a Good, else this Good is returned

Source
Or.scala
def recoverWith[H, C](f: B => Or[H, C]): Or[H, C]

Maps the given function to this Or's value if it is a Bad, returning the result, or returns this if it is already a Good.

Maps the given function to this Or's value if it is a Bad, returning the result, or returns this if it is already a Good.

Value parameters

f

the function to apply

Attributes

Returns

if this is a Bad, the result of applying the given function to the contained value, else this Good is returned

Source
Or.scala
def swap: Or[B, Nothing]

Returns an Or with the Good and Bad types swapped: Bad becomes Good and Good becomes Bad.

Returns an Or with the Good and Bad types swapped: Bad becomes Good and Good becomes Bad.

Here's an example:

scala> val lyrics = Bad("Hey Jude, don't make it bad. Take a sad song and make it better.")
lyrics: org.scalactic.Bad[Nothing,String] =
   Bad(Hey Jude, don't make it bad. Take a sad song and make it better.)

scala> lyrics.swap
res12: org.scalactic.Or[String,Nothing] =
   Good(Hey Jude, don't make it bad. Take a sad song and make it better.)

Now that song will be rolling around in your head all afternoon. But at least it is a good song (thanks to swap).

Attributes

Returns

if this Or is a Good, its Good value wrapped in a Bad; if this Or is a Bad, its Bad value wrapped in a Good.

Source
Or.scala
def toEither: Either[B, Nothing]

Returns an Either: a Right containing the Good value, if this is a Good; a Left containing the Bad value, if this is a Bad.

Returns an Either: a Right containing the Good value, if this is a Good; a Left containing the Bad value, if this is a Bad.

Note that values effectively “switch sides” when convering an Or to an Either. If the type of the Or on which you invoke toEither is Or[Int, ErrorMessage] for example, the result will be an Either[ErrorMessage, Int]. The reason is that the convention for Either is that Left is used for “bad” values and Right is used for “good” ones.

Attributes

Returns

this Good value, wrapped in a Right, or this Bad value, wrapped in a Left.

Source
Or.scala
def toOption: None.type

Returns a Some containing the Good value, if this Or is a Good, else None.

Returns a Some containing the Good value, if this Or is a Good, else None.

Attributes

Returns

the contained “good” value wrapped in a Some, if this Or is a Good; None if this Or is a Bad.

Source
Or.scala
def toSeq: IndexedSeq[Nothing]

Returns an immutable IndexedSeq containing the Good value, if this Or is a Good, else an empty immutable IndexedSeq.

Returns an immutable IndexedSeq containing the Good value, if this Or is a Good, else an empty immutable IndexedSeq.

Attributes

Returns

the contained “good” value in a lone-element Seq if this Or is a Good; an empty Seq if this Or is a Bad.

Source
Or.scala
def toTry(implicit ev: B <:< Throwable): Failure[Nothing]

Returns a Try: a Success containing the Good value, if this is a Good; a Failure containing the Bad value, if this is a Bad.

Returns a Try: a Success containing the Good value, if this is a Good; a Failure containing the Bad value, if this is a Bad.

Note: This method can only be called if the Bad type of this Or is a subclass of Throwable (or Throwable itself).

Note that values effectively “switch sides” when converting an Or to an Either. If the type of the Or on which you invoke toEither is Or[Int, ErrorMessage] for example, the result will be an Either[ErrorMessage, Int]. The reason is that the convention for Either is that Left is used for “bad” values and Right is used for “good” ones.

Attributes

Returns

this Good value, wrapped in a Right, or this Bad value, wrapped in a Left.

Source
Or.scala
def transform[H, C](gf: Nothing => Or[H, C], bf: B => Or[H, C]): Or[H, C]

Transforms this Or by applying the function gf to this Or's Good value if it is a Good, or by applying bf to this Or's Bad value if it is a Bad.

Transforms this Or by applying the function gf to this Or's Good value if it is a Good, or by applying bf to this Or's Bad value if it is a Bad.

Value parameters

bf

the function to apply to this Or's Bad value, if it is a Bad

gf

the function to apply to this Or's Good value, if it is a Good

Attributes

Returns

the result of applying the appropriate one of the two passed functions, gf or bf, to this Or's value

Source
Or.scala

Deprecated methods

override def asOr: Or[Nothing, B]

The asOr method has been deprecated and will be removed in a future version of Scalactic. Please remove invocations of asOr in expressions of type Good(value).orBad[Type] and Good[Type].orBad(value) (which now return a type already widened to Or), otherwise please use a type annotation to widen the type, such as: (Good(3): Int Or ErrorMessage).

The asOr method has been deprecated and will be removed in a future version of Scalactic. Please remove invocations of asOr in expressions of type Good(value).orBad[Type] and Good[Type].orBad(value) (which now return a type already widened to Or), otherwise please use a type annotation to widen the type, such as: (Good(3): Int Or ErrorMessage).

Attributes

Deprecated
true
Definition Classes
Or
Source
Or.scala

Inherited methods

def productElementNames: Iterator[String]

Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

Attributes

Inherited from:
Product
def withFilter[C >: B](f: Nothing => Validation[C]): Or[G, C]

Currently just forwards to filter, and therefore, returns the same result.

Currently just forwards to filter, and therefore, returns the same result.

Attributes

Inherited from:
Or
Source
Or.scala

Concrete fields

override val isBad: Boolean

Indicates whether this Or is a Bad

Indicates whether this Or is a Bad

Attributes

Returns

true if this Or is a Bad, false if it is a Good.

Source
Or.scala

Inherited fields

val isGood: Boolean

Indicates whether this Or is a Good

Indicates whether this Or is a Good

Attributes

Returns

true if this Or is a Good, false if it is a Bad.

Inherited from:
Or
Source
Or.scala