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
leftprojection and invokemapon that projected Either. If arightprojection is applied to that Left, the original Left is returned, unmodified.Like with other types which define a
mapmethod, the same can be achieved using a for-comprehension:To support multiple projections as generators in for-comprehensions, the Either type also defines a
flatMapmethod.1.0, 11/10/2008
2.7