scala.util.Either

# LeftProjection

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

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)

Source
  Either.scala
Version

  1.0, 11/10/2008

Linear Supertypes
Serializable, java.io.Serializable, Product, Equals, AnyRef, Any
Type Hierarchy Learn more about scaladoc diagrams
Ordering

1. Alphabetic
2. By inheritance

Inherited

1. LeftProjection
2. Serializable
3. Serializable
4. Product
5. Equals
6. AnyRef
7. Any

Implicitly

1. by any2stringadd
2. by StringFormat
3. by Ensuring
4. by ArrowAssoc

1. Hide All
2. Show all

Learn more about member selection
Visibility

1. Public
2. All

### Instance Constructors

1. #### new LeftProjection(e: Either[A, B])

### Value Members

1. #### final def !=(arg0: Any): Boolean

   Definition Classes
     AnyRef → Any

2. #### final def ##(): Int

   Definition Classes
     AnyRef → Any

3. #### def +(other: String): String

   Implicit information
     This member is added by an implicit conversion from LeftProjection[A, B] to any2stringadd[LeftProjection[A, B]] performed by method any2stringadd in scala.Predef.
   Definition Classes
     any2stringadd

4. #### def ->[B](y: B): (LeftProjection[A, B], B)

   Implicit information
     This member is added by an implicit conversion from LeftProjection[A, B] to ArrowAssoc[LeftProjection[A, B]] performed by method ArrowAssoc in scala.Predef.
   Definition Classes
     ArrowAssoc
   Annotations
     @inline()

5. #### final def ==(arg0: Any): Boolean

   Definition Classes
     AnyRef → Any

6. #### final def asInstanceOf[T0]: T0

   Definition Classes
     Any

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

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

8. #### val e: Either[A, B]

9. #### def ensuring(cond: (LeftProjection[A, B]) ⇒ Boolean, msg: ⇒ Any): LeftProjection[A, B]

   Implicit information
     This member is added by an implicit conversion from LeftProjection[A, B] to Ensuring[LeftProjection[A, B]] performed by method Ensuring in scala.Predef.
   Definition Classes
     Ensuring

10. #### def ensuring(cond: (LeftProjection[A, B]) ⇒ Boolean): LeftProjection[A, B]

    Implicit information
      This member is added by an implicit conversion from LeftProjection[A, B] to Ensuring[LeftProjection[A, B]] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring

11. #### def ensuring(cond: Boolean, msg: ⇒ Any): LeftProjection[A, B]

    Implicit information
      This member is added by an implicit conversion from LeftProjection[A, B] to Ensuring[LeftProjection[A, B]] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring

12. #### def ensuring(cond: Boolean): LeftProjection[A, B]

    Implicit information
      This member is added by an implicit conversion from LeftProjection[A, B] to Ensuring[LeftProjection[A, B]] performed by method Ensuring in scala.Predef.
    Definition Classes
      Ensuring

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

    Definition Classes
      AnyRef

14. #### def exists(f: (A) ⇒ Boolean): Boolean

    Returns `false` if `Right` or returns the result of the application of the given function to the `Left` value.

    Returns `false` if `Right` or returns the result of the application of the given function to the `Left` value.

        Left(12).left.exists(_ > 10)  // true
        Left(7).left.exists(_ > 10)   // false
        Right(12).left.exists(_ > 10) // false

15. #### def filter[Y](p: (A) ⇒ Boolean): Option[Either[A, Y]]

    Returns `None` if this is a `Right` or if the given predicate `p` does not hold for the left value, otherwise, returns a `Left`.

    Returns `None` if this is a `Right` or if the given predicate `p` does not hold for the left value, otherwise, returns a `Left`.

        Left(12).left.filter(_ > 10)  // Some(Left(12))
        Left(7).left.filter(_ > 10)   // None
        Right(12).left.filter(_ > 10) // None

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

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

17. #### def flatMap[BB >: B, X](f: (A) ⇒ Either[X, BB]): Either[X, BB]

    Binds the given function across `Left`.

    Binds the given function across `Left`.

        Left(12).left.flatMap(x => Left("scala")) // Left("scala")
        Right(12).left.flatMap(x => Left("scala") // Right(12)

    f

      The function to bind across `Left`.

18. #### def forall(f: (A) ⇒ Boolean): Boolean

    Returns `true` if `Right` or returns the result of the application of the given function to the `Left` value.

    Returns `true` if `Right` or returns the result of the application of the given function to the `Left` value.

        Left(12).left.forall(_ > 10)  // true
        Left(7).left.forall(_ > 10)   // false
        Right(12).left.forall(_ > 10) // true

19. #### def foreach[U](f: (A) ⇒ U): Any

    Executes the given side-effecting function if this is a `Left`.

    Executes the given side-effecting function if this is a `Left`.

        Left(12).left.foreach(x => println(x))  // prints "12"
        Right(12).left.foreach(x => println(x)) // doesn't print

    f

      The side-effecting function to execute.

20. #### def formatted(fmtstr: String): String

    Returns string formatted according to given `format` string.

    Returns string formatted according to given `format` string. Format strings are as for `String.format` (@see java.lang.String.format).

    Implicit information
      This member is added by an implicit conversion from LeftProjection[A, B] to StringFormat[LeftProjection[A, B]] performed by method StringFormat in scala.Predef.
    Definition Classes
      StringFormat
    Annotations
      @inline()

21. #### def get: A

    Returns the value from this `Left` or throws `Predef.NoSuchElementException` if this is a `Right`.

    Returns the value from this `Left` or throws `Predef.NoSuchElementException` if this is a `Right`.

        Left(12).left.get // 12
        Right(12).left.get // NoSuchElementException

    Exceptions thrown
      Predef.NoSuchElementException

      if the projection is scala.util.Right

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

    Definition Classes
      AnyRef → Any

23. #### def getOrElse[AA >: A](or: ⇒ AA): AA

    Returns the value from this `Left` or the given argument if this is a `Right`.

    Returns the value from this `Left` or the given argument if this is a `Right`.

        Left(12).left.getOrElse(17)  // 12
        Right(12).left.getOrElse(17) // 17

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

    Definition Classes
      Any

25. #### def map[X](f: (A) ⇒ X): Product with Serializable with Either[X, B]

    Maps the function argument through `Left`.

    Maps the function argument through `Left`.

        Left(12).left.map(_ + 2) // Left(14)
        Right[Int, Int](12).left.map(_ + 2) // Right(12)

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

    Definition Classes
      AnyRef

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

    Definition Classes
      AnyRef

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

    Definition Classes
      AnyRef

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

    Definition Classes
      AnyRef

30. #### def toOption: Option[A]

    Returns a `Some` containing the `Left` value if it exists or a `None` if this is a `Right`.

    Returns a `Some` containing the `Left` value if it exists or a `None` if this is a `Right`.

        Left(12).left.toOption // Some(12)
        Right(12).left.toOption // None

31. #### def toSeq: collection.Seq[A]

    Returns a `Seq` containing the `Left` value if it exists or an empty `Seq` if this is a `Right`.

    Returns a `Seq` containing the `Left` value if it exists or an empty `Seq` if this is a `Right`.

        Left(12).left.toSeq // Seq(12)
        Right(12).left.toSeq // Seq()

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

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

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

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

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

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

35. #### def →[B](y: B): (LeftProjection[A, B], B)

    Implicit information
      This member is added by an implicit conversion from LeftProjection[A, B] to ArrowAssoc[LeftProjection[A, B]] performed by method ArrowAssoc in scala.Predef.
    Definition Classes
      ArrowAssoc

### Inherited from Serializable

### Inherited from java.io.Serializable

### Inherited from Product

### Inherited from Equals

### Inherited from AnyRef

### Inherited from Any

### Inherited by implicit conversion any2stringadd from LeftProjection[A, B] to any2stringadd[LeftProjection[A, B]]

### Inherited by implicit conversion StringFormat from LeftProjection[A, B] to StringFormat[LeftProjection[A, B]]

### Inherited by implicit conversion Ensuring from LeftProjection[A, B] to Ensuring[LeftProjection[A, B]]

### Inherited by implicit conversion ArrowAssoc from LeftProjection[A, B] to ArrowAssoc[LeftProjection[A, B]]

### Ungrouped