3

可能重复:
如何在 Scala 中使用/引用布尔函数的否定?

我目前正在 coursera 中学习 Martin Odersky 的 Scala 课程。在其中一项作业中,我需要处理一个函数的否定(它代表一个谓词)。

def fun1 (p: Int => Boolean): Boolean = {
/* some code here */
}

假设函数字面p: Int => Boolean量表示某种谓词,例如x => x > 0

def fun2 (p: Int => Boolean): Boolean = {
val x = fun1 (p)
val y = ???
/* How can I call the negation of the predicate 'p' here? */
return x && y
}

例如,如果我打电话fun2fun2 (x => x > 0)

我想了很多,但我没有取得任何进展。我不是要求任何分配问题的解决方案(我相信我坚持荣誉代码),但是对我在这里遗漏的任何解释都会有很大帮助。

4

1 回答 1

4

您想编写一个将谓词作为参数并返回另一个谓词的函数。

def negate(pred: Int => Boolean): Int => Boolean =
  (x: Int) => !pred(x)
于 2012-10-03T16:05:48.490 回答