Search code examples
scalamonadsflattenscala-option

Un-optioning an optioned Option


Say I have a val s: Option[Option[String]]. It can thus have the following values:

Some(Some("foo")) Some(None) None

I want to reduce it so that the first becomes Some("foo") while the two others become None. Obviously there are many ways to accomplish this, but I'm looking for a simple, perhaps built-in, less-than-one-liner.


Solution

  • It's a shame that flatten doesn't exist. It should.

    Flatten does exist now.

    As before,

    s getOrElse None
    

    (in addition to the other answers) will also do the same thing.