【发布时间】:2014-10-27 17:51:14
【问题描述】:
我一直在阅读 Scala 文档,并在浏览 Option 类时看到 filter 的实现如下所示:
final def filter(p: A => Boolean): Option[A] =
if (isEmpty || p(this.get)) this else None
为什么我们必须检查我们的Option 实例是否为空?这不会导致None 吗?
【问题讨论】:
我一直在阅读 Scala 文档,并在浏览 Option 类时看到 filter 的实现如下所示:
final def filter(p: A => Boolean): Option[A] =
if (isEmpty || p(this.get)) this else None
为什么我们必须检查我们的Option 实例是否为空?这不会导致None 吗?
【问题讨论】:
|| 是短路的,因此首先检查isEmpty 可以确保不会在空选项上调用get(这会引发异常)。
【讨论】: