1

一段时间以来,我一直在努力将 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) )

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

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

2 回答 2

8

Scala 的内置Option是您要重新发明的。

在这种情况下:

scala> val sOpt: Option[String] = Option(null)
sOpt: Option[String] = None
于 2010-06-01T01:23:34.540 回答
1

为什么要费心用它制作一个完整的伴生对象呢?它只是一个函数,所以你不需要将它实现为一个看起来像函数的对象。

object MyUtilities{
  // a whole bunch of other utilities that you use all over can also be put in this class.
  def maybe[T](t:T) = if (t==null) None else Some(t)
}
于 2010-06-01T01:30:55.187 回答