Scalactic is brought to you by:

object Good extends Serializable

Companion object for Good that offers, in addition to the standard factory method for Good that takes single “good” type, an parameterless apply used to narrow the Good type when creating a Bad.

Source
Or.scala
Linear Supertypes
Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Good
  2. Serializable
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. class GoodType[G] extends AnyRef

    Supports the syntax that enables Bad instances to be created with a specific Good type.

Value Members

  1. def apply[G]: GoodType[G]

    Captures a Good type to enable a Bad to be constructed with a specific Good type.

    Captures a Good type to enable a Bad to be constructed with a specific Good type.

    Because Or has two types, but the Bad factory method only takes a value of the “bad” type, the Scala compiler will infer Nothing for the Good type:

    scala> Bad("oops")
    res1: org.scalactic.Bad[Nothing,String] = Bad(oops)
    

    Often Nothing will work fine, as it will be widened as soon as the compiler encounters a more specific Good type. Sometimes, however, you may need to specify it. In such situations you can use this factory method, like this:

    scala> Good[Int].orBad("oops")
    res3: org.scalactic.Bad[Int,String] = Bad(oops)