【发布时间】:2013-11-25 13:45:54
【问题描述】:
我的代码由调用 Akka actor 返回的一些 scala.concurrent.Futures 组成
所以我的演员中的示例代码将类似于以下内容:
val ivResult: Future[Any] = ask(ivActor, ivId)
// perform mapping is a function of type (Any) => Unit
val ivMapping: Future[Unit] = ivResult.map(performingMapping)
// erLookup is a function of type (Any) => Future[Any]
val erResult: Future[Any] = ivResult.flatMap(erLookup)
等等。代码基本上由 future.flatmap().map() 组成,用于执行聚合逻辑
我的问题是我想实现空安全逻辑,这样如果未来的结果为空,那么我们就不会抛出 NullPointerExceptions
显然,我可以在每个函数中嵌入空安全检查,但考虑到 Scala 的强大功能,这些检查似乎有点冗长。
因此,我正在寻找是否有更优雅的方法来做到这一点,也许使用隐式等。
【问题讨论】:
-
只是不要将
null作为T的实例返回,而是返回Option[T]。grep -r "null"在您的项目中并修复所有出现的null。如果您有返回null的第三方方法,请使用Option包装它,如下所示:Option(thirdPartyMethod())。 -
我很想知道您在执行Mapping 和erLookup 函数时做了什么。