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.
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)