use*_*318 1 functional-programming scala
为什么会这样?
def exists(s: Set, p: Int => Boolean): Boolean = { forall(s, !p(_)) }
Run Code Online (Sandbox Code Playgroud)
这不是吗?
def exists(s: Set, p: Int => Boolean): Boolean = { forall(s, !p()) }
Run Code Online (Sandbox Code Playgroud)
forall函数在哪里,p是谓词.
对谓词的调用是期望传递一个参数,所以你不能在没有传递任何东西的情况下调用它(这就是p()正在做的事情).
下划线是Scala对"当前值"的简称,其中该值是要传递给p的Int.如果我们明确地将Int标记为i,那么这会降低:
{ forall(s, (i: Int) => !p(i)) }
Run Code Online (Sandbox Code Playgroud)