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 に答える