1
def isZero(x: Int) = x == 0

def eval(x: Int, g: Int => Boolean) = g(x)

//Just passes 0 and f to eval
def passToEval(f: Int => Boolean): Boolean = {
    eval(0, f)
}

//true
passToEval(isZero)

问题是,我怎样才能将 !f 传递给方法 eval?我对涉及 passToEval 参数的解决方法不感兴趣

4

1 回答 1

4

您可以定义一个函数来否定其输入函数并传递它:

def not[A](f: A => Boolean) = (x: A) => !f(x)

passToEval(not(isZero))
于 2013-10-03T20:01:51.773 回答