scala.util

# Either

#### object Either

Source
  Either.scala

Linear Supertypes
AnyRef, Any
Ordering

1. Alphabetic
2. By inheritance

Inherited

1. Either
2. AnyRef
3. Any

1. Hide All
2. Show all

Learn more about member selection
Visibility

1. Public
2. All

### Type Members

1. #### final case class LeftProjection[+A, +B](e: Either[A, B]) extends Product with Serializable

   Projects an `Either` into a `Left`.

   Projects an `Either` into a `Left`.

   This allows for-comprehensions over Either instances - for example

       for (s <- Left("flower").left) yield s.length // Left(6)

   Continuing the analogy with scala.Option, a `LeftProjection` declares that `Left` should be analogous to `Some` in some code.

       // using Option:
       def interactWithDB(x: Query): Option[Result] =
         try {
           Some(getResultFromDatabase(x))
         } catch {
           case ex => None
         }

       // this will only be executed if interactWithDB returns a Some
       val report =
         for (r <- interactWithDB(someQuery)) yield generateReport(r)
       if (report.isDefined)
         send(report)
       else
         log("report not generated, not sure why...")

       // using Either
       def interactWithDB(x: Query): Either[Exception, Result] =
         try {
           Right(getResultFromDatabase(x))
         } catch {
           case ex => Left(ex)
         }

       // this will only be executed if interactWithDB returns a Right
       val report =
         for (r <- interactWithDB(someQuery).right) yield generateReport(r)
       if (report.isRight)
         send(report)
       else
         log("report not generated, reason was " + report.left.get)

   Version

     1.0, 11/10/2008

2. #### implicit final class MergeableEither[A] extends AnyVal

   Allows use of a `merge` method to extract values from Either instances regardless of whether they are Left or Right.

   Allows use of a `merge` method to extract values from Either instances regardless of whether they are Left or Right.

       val l = Left(List(1)): Either[List[Int], Vector[Int]]
       val r = Right(Vector(1)): Either[List[Int], Vector[Int]]
       l.merge: Seq[Int] // List(1)
       r.merge: Seq[Int] // Vector(1)

3. #### final case class RightProjection[+A, +B](e: Either[A, B]) extends Product with Serializable

   Projects an `Either` into a `Right`.

   Projects an `Either` into a `Right`.

   This allows for-comprehensions over Either instances - for example

       for (s <- Right("flower").right) yield s.length // Right(6)

   Continuing the analogy with scala.Option, a `RightProjection` declares that `Right` should be analogous to `Some` in some code.

   Analogous to `LeftProjection`, see example usage in its documentation above.

   Version

     1.0, 11/10/2008

### 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. #### final def asInstanceOf[T0]: T0

   Definition Classes
     Any

5. #### def clone(): AnyRef

   Attributes
     protected[java.lang]
   Definition Classes
     AnyRef
   Annotations
     @throws( ... )

6. #### def cond[A, B](test: Boolean, right: ⇒ B, left: ⇒ A): Either[A, B]

   If the condition is satisfied, return the given `B` in `Right`, otherwise, return the given `A` in `Left`.

   If the condition is satisfied, return the given `B` in `Right`, otherwise, return the given `A` in `Left`.

       val userInput: String = ...
       Either.cond(
         userInput.forall(_.isDigit) && userInput.size == 10,
         PhoneNumber(userInput),
         "The input (%s) does not look like a phone number".format(userInput)

7. #### final def eq(arg0: AnyRef): Boolean

   Definition Classes
     AnyRef

8. #### def equals(arg0: Any): Boolean

   Definition Classes
     AnyRef → Any

9. #### def finalize(): Unit

   Attributes
     protected[java.lang]
   Definition Classes
     AnyRef
   Annotations
     @throws( classOf[java.lang.Throwable] )

10. #### final def getClass(): Class[_]

    Definition Classes
      AnyRef → Any

11. #### def hashCode(): Int

    Definition Classes
      AnyRef → Any

12. #### final def isInstanceOf[T0]: Boolean

    Definition Classes
      Any

13. #### final def ne(arg0: AnyRef): Boolean

    Definition Classes
      AnyRef

14. #### final def notify(): Unit

    Definition Classes
      AnyRef

15. #### final def notifyAll(): Unit

    Definition Classes
      AnyRef

16. #### final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
      AnyRef

17. #### def toString(): String

    Definition Classes
      AnyRef → Any

18. #### final def wait(): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

19. #### final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

20. #### final def wait(arg0: Long): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

### Inherited from AnyRef

### Inherited from Any

### Ungrouped