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
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
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
.
the function to apply if this is a Left
the function to apply if this is a Right
the results of applying the function
val result: Either[Exception, Value] = possiblyFailingOperation() log(result.fold( ex => "Operation failed with " + ex, v => "Operation produced value: " + v ))
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).
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
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.
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
Projects this Either
as a Left
.
Projects this Either
as a Right
.
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.
val l: Either[String, Int] = Left("left") val r: Either[Int, String] = l.swap // Result: Right("left")
Represents a value of one of two possible types (a disjoint union.) Instances of Either are either an instance of scala.util.Left or scala.util.Right.
A common use of Either is as an alternative to scala.Option for dealing with possible missing values. In this usage, scala.None is replaced with a scala.util.Left which can contain useful information. scala.util.Right takes the place of scala.Some. Convention dictates that Left is used for failure and Right is used for success.
For example, you could use
Either[String, Int]
to detect whether a received input is a String or an Int.A projection can be used to selectively operate on a value of type Either, depending on whether it is of type Left or Right. For example, to transform an Either using a function, in the case where it's a Left, one can first apply the
left
projection and invokemap
on that projected Either. If aright
projection is applied to that Left, the original Left is returned, unmodified.Like with other types which define a
map
method, the same can be achieved using a for-comprehension:To support multiple projections as generators in for-comprehensions, the Either type also defines a
flatMap
method.1.0, 11/10/2008
2.7