Right (original) (raw)
scala.util.Right
final case class Right[+A, +B](value: B) extends Either[A, B]
Members list
Returns true
if this is a Left
, false
otherwise.
Returns true
if this is a Left
, false
otherwise.
Left("tulip").isLeft // true
Right("venus fly-trap").isLeft // false
Attributes
Source
Returns true
if this is a Right
, false
otherwise.
Returns true
if this is a Right
, false
otherwise.
Left("tulip").isRight // false
Right("venus fly-trap").isRight // true
Attributes
Source
Upcasts this Right[A, B]
to Either[A1, B]
Upcasts this Right[A, B]
to Either[A1, B]
Right("x") // Either[Nothing, String]
Right("x").withLeft[Int] // Either[Int, String]
Attributes
Source
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 parameters
elem
the element to test.
Attributes
Returns
true
if this is a Right
value equal to elem
.
Inherited from:
Source
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
Attributes
Inherited from:
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
.
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)
Attributes
Inherited from:
Source
Binds the given function across Right
.
Binds the given function across Right
.
Value parameters
f
The function to bind across Right
.
Attributes
Inherited from:
Source
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
Attributes
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:
Source
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 parameters
fa
the function to apply if this is a Left
fb
the function to apply if this is a Right
Attributes
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:
Source
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
Attributes
Inherited from:
Source
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 parameters
f
The side-effecting function to execute.
Attributes
Inherited from:
Source
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
Attributes
Inherited from:
Source
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:
(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
.
Attributes
Inherited from:
Source
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:
(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.
Attributes
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 to Option#flatten
Inherited from:
Source
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")
Attributes
Inherited from:
Source
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)
Attributes
Inherited from:
Source
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)
Attributes
Inherited from:
Source
An iterator over the names of all the elements of this product.
An iterator over the names of all the elements of this product.
Attributes
Inherited from:
Source
An iterator over all the elements of this product.
An iterator over all the elements of this product.
Attributes
Returns
in the default implementation, an Iterator[Any]
Inherited from:
Source
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.
Attributes
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:
Source
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
Attributes
Inherited from:
Source
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()
Attributes
Inherited from:
Source
Projects this Either
as a Right
.
Projects this Either
as a Right
.
Because Either
is right-biased, this method is not normally needed.
Attributes
Deprecated
[Since version 2.13.0]
Either is now right-biased, use methods directly on Either
Inherited from:
Source
In this article