Right
The right side of the disjoint union, as opposed to the scala.util.Left side.
The right side of the disjoint union, as opposed to the scala.util.Left side.
Value members
Concrete methods
Inherited methods
Returns true if this is a Right and its value is equal to elem (as determined by ==),
returns false otherwise.
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 Params
- elem
the element to test.
- Returns
trueif this is aRightvalue equal toelem.- Inherited from
- Either
Returns false if Left or returns the result of the application of
the given predicate to the Right value.
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
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.
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
Binds the given function across Right.
Binds the given function across Right.
- Value Params
- f
The function to bind across
Right.
- Inherited from
- Either
Returns the right value if this is right or this value if this is left
Returns the right value if this is right or this value if this is left
- Example
val l: Either[String, Either[String, Int]] = Left("pancake") val rl: Either[String, Either[String, Int]] = Right(Left("flounder")) val rr: Either[String, Either[String, Int]] = Right(Right(7)) l.flatten //Either[String, Int]: Left("pancake") rl.flatten //Either[String, Int]: Left("flounder") rr.flatten //Either[String, Int]: Right(7)Equivalent to
flatMap(id => id)- Inherited from
- Either
Applies fa if this is a Left or fb if this is a Right.
Applies fa if this is a Left or fb if this is a Right.
- Value Params
- fa
the function to apply if this is a
Left- fb
the function to apply if this is a
Right
- Returns
the results of applying the function
- Example
val result = util.Try("42".toInt).toEither result.fold( e => s"Operation failed with $e", v => s"Operation produced value: $v" )- Inherited from
- Either
Returns true if Left or returns the result of the application of
the given predicate to the Right value.
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
Executes the given side-effecting function if this is a Right.
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 Params
- f
The side-effecting function to execute.
- Inherited from
- Either
Returns the value from this Right or the given argument if this is a Left.
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
Joins an Either through Left.
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
Joins an Either through Right.
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
Right[String, Either[String, Int]](Right(12)).joinRight // Result: Right(12) Right[String, Either[String, Int]](Left("flower")).joinRight // Result: Left("flower") Left[String, Either[String, Int]]("flower").joinRight // Result: Left("flower")This method, and
joinLeft, are analogous toOption#flatten- Inherited from
- Either
Projects this Either as a Left.
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
The given function is applied if this is a Right.
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
Returns this Right or the given argument if this is a Left.
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
An iterator over the names of all the elements of this product.
An iterator over the names of all the elements of this product.
- Inherited from
- Product
An iterator over all the elements of this product.
An iterator over all the elements of this product.
- Returns
in the default implementation, an
Iterator[Any]- Inherited from
- Product
If this is a Left, then return the left value in Right or vice versa.
If this is a Left, then return the left value in Right or vice versa.
- Example
val left: Either[String, Int] = Left("left") val right: Either[Int, String] = left.swap // Result: Right("left")val right = Right(2) val left = Left(3) for { r1 <- right r2 <- left.swap } yield r1 * r2 // Right(6)- Inherited from
- Either
Returns a Some containing the Right value
if it exists or a None if this is a Left.
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
Returns a Seq containing the Right value if
it exists or an empty Seq if this is a Left.
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
Deprecated and Inherited methods
Projects this Either as a Right.
Projects this Either as a Right.
Because Either is right-biased, this method is not normally needed.
- Deprecated
- Inherited from
- Either