2014-09-03 45 views
3

我一直在读通过斯卡拉文档和同时通过Option类撇我看到filter实现,它看起来像这样:斯卡拉选择滤波器方法怀疑

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

为什么我们要检查我们Option实例是否是空的?这不会导致None这种方式吗?

回答

6

||是短路,所以检查isEmpty首先确保get不会在空选项(这将引发异常)上调用。