On this page
Class Left.Left
The left side of the disjoint union, as opposed to the scala.util.Right side.
| Supertypes |
|---|
Concrete methods
Source
Returns true if this is a Left, false otherwise.
Left("tulip").isLeft // true
Right("venus fly-trap").isLeft // false
Source
Returns true if this is a Right, false otherwise.
Left("tulip").isRight // false
Right("venus fly-trap").isRight // true
Source
Upcasts this Left[A, B] to Either[A, B1]
Left(1) // Either[Int, Nothing]
Left(1).withRight[String] // Either[Int, String]
Inherited methods
Source
Returns true if this is a Right and its value is equal to elem (as determined by ==), returns false otherwise.
// Returns true because value of Right is "something" which equals "something".
Right("something") contains "something"
// Returns false because value of Right is "something" which does not equal "anything".
Right("something") contains "anything"
// Returns false because it's not a Right value.
Left("something") contains "something"
| Value parameters |
|
|---|---|
| Returns |
|
| Inherited from | Either |
Source
Returns false if Left or returns the result of the application of the given predicate to the Right value.
Right(12).exists(_ > 10) // true
Right(7).exists(_ > 10) // false
Left(12).exists(_ => true) // false
| Inherited from | Either |
|---|
Source
Returns Right with the existing value of Right if this is a Right and the given predicate p holds for the right value, or Left(zero) if this is a Right and the given predicate p does not hold for the right value, or Left with the existing value of Left if this is a Left.
Right(12).filterOrElse(_ > 10, -1) // Right(12)
Right(7).filterOrElse(_ > 10, -1) // Left(-1)
Left(7).filterOrElse(_ => false, -1) // Left(7)
| Inherited from | Either |
|---|
Source
Binds the given function across Right.
| Value parameters |
|
|---|---|
| Inherited from | Either |
Source
Returns the right value if this is right or this value if this is left
| Example | Equivalent to |
|---|---|
| Inherited from | Either |
Source
def fold[C](fa: A => C, fb: B => C): C
Applies fa if this is a Left or fb if this is a Right.
| Value parameters |
|
|---|---|
| Returns | the results of applying the function |
| Example | |
| Inherited from | Either |
Source
Returns true if Left or returns the result of the application of the given predicate to the Right value.
Right(12).forall(_ > 10) // true
Right(7).forall(_ > 10) // false
Left(12).forall(_ => false) // true
| Inherited from | Either |
|---|
Source
Executes the given side-effecting function if this is a Right.
Right(12).foreach(println) // prints "12"
Left(12).foreach(println) // doesn't print
| Value parameters |
|
|---|---|
| Inherited from | Either |
Source
def getOrElse[B1 >: B](or: => B1): B1
Returns the value from this Right or the given argument if this is a Left.
Right(12).getOrElse(17) // 12
Left(12).getOrElse(17) // 17
| Inherited from | Either |
|---|
Source
Joins an Either through Left.
This method requires that the left side of this Either is itself an Either type. That is, this must be some type like:
Either[Either[C, B], B]
(which respects the type parameter bounds, shown below.)
If this instance is a Left[Either[C, B]] then the contained Either[C, B] will be returned, otherwise this value will be returned unmodified.
Left[Either[Int, String], String](Right("flower")).joinLeft // Result: Right("flower")
Left[Either[Int, String], String](Left(12)).joinLeft // Result: Left(12)
Right[Either[Int, String], String]("daisy").joinLeft // Result: Right("daisy")
This method, and joinRight, are analogous to Option#flatten.
| Inherited from | Either |
|---|
Source
Joins an Either through Right.
This method requires that the right side of this Either is itself an Either type. That is, this must be some type like:
Either[A, Either[A, C]]
(which respects the type parameter bounds, shown below.)
If this instance is a Right[Either[A, C]] then the contained Either[A, C] will be returned, otherwise this value will be returned unmodified.
| Example | This method, and |
|---|---|
| Inherited from | Either |
Source
def left: LeftProjection[A, B]
Projects this Either as a Left.
This allows for-comprehensions over the left side of Either instances, reversing Either's usual right-bias.
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 _: SQLException => None
}
// this will only be executed if interactWithDB returns a Some
val report = for (result <- interactWithDB(someQuery)) yield generateReport(result)
report match {
case Some(r) => send(r)
case None => log("report not generated, not sure why...")
}
// using Either
def interactWithDB(x: Query): Either[Exception, Result] =
try Right(getResultFromDatabase(x))
catch {
case e: SQLException => Left(e)
}
// run a report only if interactWithDB returns a Right
val report = for (result <- interactWithDB(someQuery)) yield generateReport(result)
report match {
case Right(r) => send(r)
case Left(e) => log(s"report not generated, reason was $e")
}
// only report errors
for (e <- interactWithDB(someQuery).left) log(s"query failed, reason was $e")
| Inherited from | Either |
|---|
Source
The given function is applied if this is a Right.
Right(12).map(x => "flower") // Result: Right("flower")
Left(12).map(x => "flower") // Result: Left(12)
| Inherited from | Either |
|---|
Source
Returns this Right or the given argument if this is a Left.
Right(1) orElse Left(2) // Right(1)
Left(1) orElse Left(2) // Left(2)
Left(1) orElse Left(2) orElse Right(3) // Right(3)
| Inherited from | Either |
|---|
Source
An iterator over the names of all the elements of this product.
| Inherited from | Product |
|---|
Source
An iterator over all the elements of this product.
| Returns | in the default implementation, an |
|---|---|
| Inherited from | Product |
Source
If this is a Left, then return the left value in Right or vice versa.
| Example | |
|---|---|
| Inherited from | Either |
Source
Returns a Some containing the Right value if it exists or a None if this is a Left.
Right(12).toOption // Some(12)
Left(12).toOption // None
| Inherited from | Either |
|---|
Source
Returns a Seq containing the Right value if it exists or an empty Seq if this is a Left.
Right(12).toSeq // Seq(12)
Left(12).toSeq // Seq()
| Inherited from | Either |
|---|
Source
| Inherited from | Either |
|---|
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/util/Left.html