可能重复:
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)
我给了它很多想法,但我没有取得任何进展。我不是要求任何分配问题的解决方案(我相信我坚持使用荣誉代码),但是我对这里缺少的任何解释都会有很大的帮助。
答案 0 :(得分:4)
您希望编写一个将谓词作为参数并返回另一个谓词的函数。
def negate(pred: Int => Boolean): Int => Boolean =
(x: Int) => !pred(x)