Maybes是scala的好模式吗?

Fre*_*lam 1 java null scala option maybe

有一段时间我一直在努力将scala与可能返回null的java方法集成.我想出了以下实用程序,它有很多帮助:

// 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) )
Run Code Online (Sandbox Code Playgroud)

我对这个解决方案有几个问题:

  1. 是否有更好或更标准的模式可供使用?
  2. 我是否复制了已存在的内容?
  3. 这个功能有隐藏的陷阱吗?

Ran*_*ulz 8

Scala的内置选项是您重新发明的目标.

在这种情况下:

scala> val sOpt: Option[String] = Option(null)
sOpt: Option[String] = None
Run Code Online (Sandbox Code Playgroud)

  • @Thomas:2.8中有很多东西好多了.这只是其中之一. (2认同)