Scala Option过滤方法存在疑问

时间:2014-09-03 09:26:31

标签: scala filter option

我一直在阅读Scala文档,在浏览Option课程时,我看到filter实现看起来像这样:

final def filter(p: A => Boolean): Option[A] = 
  if (isEmpty || p(this.get)) this else None

为什么我们必须检查我们的Option实例是否为空?这种结果不会导致None吗?

1 个答案:

答案 0 :(得分:6)

||是短路的,因此首先检查isEmpty可确保在空选项上调用get(这会引发异常)。