Search code examples
javascalanulloption-typescala-option

Are Maybes a good pattern for scala?


For a while I have been struggling to integrate scala with java methods that might return null. I came up with the following utility which helps a lot:

// produce an Option, nulls become None
object Maybe {
    def apply[T](t:T) = if (t==null) None else Some(t)
}

Maybe(javaClass.getResultCouldBeNull()).map( result => doSomeWork(result) )

I have a few questions about this solution:

  1. Is there a better or more standard pattern to use?
  2. Am I duplicating something that already exists?
  3. Does this functionality have hidden gotchas?

Solution

  • Scala's built-in Option is what you're setting out to reinvent.

    In that case:

    scala> val sOpt: Option[String] = Option(null)
    sOpt: Option[String] = None