我知道这是一个任务问题,但我似乎无法弄清楚如何做到这一点。我对Scala很新,并且语法有问题。
我想知道如何做到这一点:
编写一个函数compose
,它接受两个函数并一个接一个地应用。所以compose
- 函数有两个函数作为参数,一个函数作为输出:
val f = compose(fib, square)
f(3) // f(3) == fib(square(3)) == fib(9) == 34
到目前为止我尝试的代码:
val f = compose(fib, square)
def compose(f: Int => Int, x: Int => Int): Int = {
f(x())
}
def square(i: Int): Int = {
i * i
}
def fib(i: Int): Int = {
if (i < 2) {
i
} else {
fib(i - 1) + fib(i - 2)
}
}
我似乎无法弄清楚语法应该如何,所以我可以调用f(3)
并获得34作为结果。
答案 0 :(得分:1)
好的,这是:
def compose(f: Int => Int, x: Int => Int): Int => Int = {
i => f(x(i))
}
您只需命名输入参数(i
),然后您可以使用它来传递给函数x