trait TrySugar extends AnyRef
Trait providing an implicit class that adds a toOr method to
Try, which converts Success to Good,
and Failure to Bad, as well as a validating method,
which takes one or more validation functions and returns either the
same Try if either the Try had already failed or its value
passes all the functions, or ValidationFailedException containing an error message
describing the first validation that failed.
Here's an example validation method, which passes if the given Int is evenly
divisible by 10 (i.e., the result will be Pass). If the value does not pass
this test, the result is a Fail containing a helpful error message string.
scala> import org.scalactic._
import org.scalactic._
scala> import TrySugar._
import TrySugar._
scala> import scala.util.Try
import scala.util.Try
scala> def isRound(i: Int): Validation[ErrorMessage] =
     |   if (i % 10 == 0) Pass else Fail(i + " was not a round number")
isRound: (i: Int)org.scalactic.Validation[org.scalactic.ErrorMessage]
Validation will be attempted on a successful Try. If the validation succeeds, the
resulting Try will be the same successful Try with the same value. (A
"validation" only transforms the Try if the validation fails, otherwise it is the
same Try. The only difference is its value has now been proven valid.)
In the following example, a successful Try[Int] with the value 100
passes the validation (which checks whether 100 is evenly divisible by 10), therefore
the result of the validating call is the same successful Try
with the same value.
scala> val try100 = Try(100) try100: scala.util.Try[Int] = Success(100) scala> val round100 = try100.validating(isRound) round100: scala.util.Try[Int] = Success(100)
If validation fails, the successful Try will be transformed into a failed one, with
a ValidationFailedException that contains the error message
returned by the validation function. In the following example, 42 fails the validation because it
is not evenly divisible by 10:
scala> val try42 = Try(42) try42: scala.util.Try[Int] = Success(42) scala> val round42 = try42.validating(isRound) round42: scala.util.Try[Int] = Failure(org.scalactic.exceptions.ValidationFailedException: 42 was not a round number)
If validating is called on a failed Try, it just returns the same failed Try:
scala> val tryEx = Try[Int] { throw new Exception("oops!") }
tryEx: scala.util.Try[Int] = Failure(java.lang.Exception: oops!)
scala> val roundEx = tryEx.validating(isRound)
roundEx: scala.util.Try[Int] = Failure(java.lang.Exception: oops!)
The validating method accepts one or more validation functions. If you
pass more than one, they will be tried in order up until the first failure, whose
error message will appear in the ValidationFailedException. In other words,
validating will short circuit at the first error and return that. It
will not accumulate errors. For example, the following validation will short circuit
after the isDivBy3 function fails:
scala> def isDivBy3(i: Int): Validation[ErrorMessage] =
     |   if (i % 3 == 0) Pass else Fail(i + " was not divisible by 3")
isDivBy3: (i: Int)org.scalactic.Validation[org.scalactic.ErrorMessage]
scala> def isAnswerToLifeTheUniverseAndEverything(i: Int): Validation[ErrorMessage] =
     |   if (i == 42) Pass else Fail(i + " did not equal 42")
isAnswerToLifeTheUniverseAndEverything: (i: Int)org.scalactic.Validation[org.scalactic.ErrorMessage]
scala> try100.validating(isRound, isDivBy3, isAnswerToLifeTheUniverseAndEverything)
res0: scala.util.Try[Int] = Failure(org.scalactic.exceptions.ValidationFailedException: 100 was not divisible by 3)
Here are some examples of the toOr method:
scala> try100.toOr res1: org.scalactic.Or[Int,Throwable] = Good(100) scala> tryEx.toOr res2: org.scalactic.Or[Int,Throwable] = Bad(java.lang.Exception: oops!)
- Source
 - TrySugar.scala
 
- Alphabetic
 - By Inheritance
 
- TrySugar
 - AnyRef
 - Any
 
- Hide All
 - Show All
 
- Public
 - All
 
Type Members
- 
      
      
      
        
      
    
      
        implicit 
        class
      
      
        Tryizer[T] extends AnyRef
      
      
      
Implicit class that adds a
toOrmethod toTry, which convertsSuccesstoGood, andFailuretoBad, as well as avalidationmethod, which takes one or more functions that validate theFuture's value.Implicit class that adds a
toOrmethod toTry, which convertsSuccesstoGood, andFailuretoBad, as well as avalidationmethod, which takes one or more functions that validate theFuture's value.See the main documentation for trait
TrySugarfor more detail and examples. 
Value Members
- 
      
      
      
        
      
    
      
        final 
        def
      
      
        !=(arg0: Any): Boolean
      
      
      
- Definition Classes
 - AnyRef → Any
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        ##(): Int
      
      
      
- Definition Classes
 - AnyRef → Any
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        ==(arg0: Any): Boolean
      
      
      
- Definition Classes
 - AnyRef → Any
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        asInstanceOf[T0]: T0
      
      
      
- Definition Classes
 - Any
 
 - 
      
      
      
        
      
    
      
        
        def
      
      
        clone(): AnyRef
      
      
      
- Attributes
 - protected[java.lang]
 - Definition Classes
 - AnyRef
 - Annotations
 - @native() @throws( ... )
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        eq(arg0: AnyRef): Boolean
      
      
      
- Definition Classes
 - AnyRef
 
 - 
      
      
      
        
      
    
      
        
        def
      
      
        equals(arg0: Any): Boolean
      
      
      
- Definition Classes
 - AnyRef → Any
 
 - 
      
      
      
        
      
    
      
        
        def
      
      
        finalize(): Unit
      
      
      
- Attributes
 - protected[java.lang]
 - Definition Classes
 - AnyRef
 - Annotations
 - @throws( classOf[java.lang.Throwable] )
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        getClass(): Class[_]
      
      
      
- Definition Classes
 - AnyRef → Any
 - Annotations
 - @native()
 
 - 
      
      
      
        
      
    
      
        
        def
      
      
        hashCode(): Int
      
      
      
- Definition Classes
 - AnyRef → Any
 - Annotations
 - @native()
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        isInstanceOf[T0]: Boolean
      
      
      
- Definition Classes
 - Any
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        ne(arg0: AnyRef): Boolean
      
      
      
- Definition Classes
 - AnyRef
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        notify(): Unit
      
      
      
- Definition Classes
 - AnyRef
 - Annotations
 - @native()
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        notifyAll(): Unit
      
      
      
- Definition Classes
 - AnyRef
 - Annotations
 - @native()
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        synchronized[T0](arg0: ⇒ T0): T0
      
      
      
- Definition Classes
 - AnyRef
 
 - 
      
      
      
        
      
    
      
        
        def
      
      
        toString(): String
      
      
      
- Definition Classes
 - AnyRef → Any
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        wait(): Unit
      
      
      
- Definition Classes
 - AnyRef
 - Annotations
 - @throws( ... )
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        wait(arg0: Long, arg1: Int): Unit
      
      
      
- Definition Classes
 - AnyRef
 - Annotations
 - @throws( ... )
 
 - 
      
      
      
        
      
    
      
        final 
        def
      
      
        wait(arg0: Long): Unit
      
      
      
- Definition Classes
 - AnyRef
 - Annotations
 - @native() @throws( ... )