我一直在阅读Scala文档,在浏览Option
课程时,我看到filter
实现看起来像这样:
final def filter(p: A => Boolean): Option[A] =
if (isEmpty || p(this.get)) this else None
为什么我们必须检查我们的Option
实例是否为空?这种结果不会导致None
吗?
答案 0 :(得分:6)
||
是短路的,因此首先检查isEmpty
可确保在空选项上调用get
(这会引发异常)。