Introduction
This little code snippet will help you convert an
Option
into an
Either
and back. This can be useful if you want to carry an error state when the
Option
is
None
. It is also intersting to look at it to learn more about
Option
and
Either
.
Code Snippet
Here is a bit of code to transform an Option into an Either and back:
object OptionHelper { implicit class OptionToEither[A](opt: Option[A]) { def asEither[ERR](err: => ERR): Either[ERR, A] = { opt match { case Some(v) => Right(v) case None => Left(err) } } } implicit class EitherToOption[A](ei: Either[_, A]) { lazy final val asOption: Option[A] = { ei match { case Right(v) => Some(v) case Left(_) => None } } } }
to import it:
import OptionHelper._
Note that going from
Either
to
Option
is not advised since you are going to lose the
Left
side of the
Either
with the information it contains.
Play with it!
Give it a spin:
Or directly on Scastie.
Conclusion
You now know how to convert an
Option
into an
Either
and back. Use it wisely !