Left
The left side of the disjoint union, as opposed to the scala.util.Right side.
The left side of the disjoint union, as opposed to the scala.util.Right 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
true
if this is aRight
value 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