繁体   English   中英

Maybes是scala的良好模式吗?

[英]Are Maybes a good pattern for scala?

一段时间以来,我一直在努力将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. 此功能是否隐藏了陷阱?

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

在这种情况下:

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

为什么要用它来制作整个伴侣对象呢? 它只是一个函数,因此您无需将其实现为看起来像函数的对象。

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)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM