Scala - 对谓词的否定

时间:2012-10-03 14:42:25

标签: scala

  

可能重复:
  How to use / refer to the negation of a boolean function in Scala?

我目前正在学习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
}

例如,如果我将fun2称为fun2 (x => x > 0)

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

1 个答案:

答案 0 :(得分:4)

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

def negate(pred: Int => Boolean): Int => Boolean =
  (x: Int) => !pred(x)