1

为什么这行得通?

def exists(s: Set, p: Int => Boolean): Boolean = { forall(s, !p(_)) }

这不是吗?

def exists(s: Set, p: Int => Boolean): Boolean = { forall(s, !p()) }

whereforall是一个函数,并且p是谓词。

4

1 回答 1

5

对谓词的调用期望传递一个参数,所以你不能在不传递任何东西的情况下调用它(这就是p()正在做的事情)。

下划线是“当前值”的一种 Scala 简写,其中该值是要传递给 p 的 Int。如果我们将该 Int 显式标记为i,那么这将变为:

{ forall(s, (i: Int) => !p(i)) }
于 2013-10-07T03:42:09.713 回答