接受 Int 和 returns 函数的函数

Function that accepts an Int and returns a function

有人可以解释一下,如何使用 Scala 函数式编程编写一个接受整数的函数和 returns 另一个函数?要实现以下问题:一个函数以数字为参数并返回一个也以数字为参数的新函数:

此外,当调用新函数时,它returns其参数与原始数字的总和。

此致。

我希望代码能自我解释:

def f(i: Int) = (n: Int) => n + i

// some tests
val f2 = f(2)

f2(10)  // yields 12
f2(20)  // yields 22

我要补充的是塞巴斯蒂安的回答是它背后的概念。您定义的函数类型是什么?你要找的是高阶函数,也就是把函数作为参数的函数,还有return个函数。

那么,下面函数的类型是什么 f

def f(n: Int): ??? = (m: Int) => n + m

正如您在 = 之后从 Scala 中的 lambda 表示法中看到的那样,它需要 m,它是 Int 和 return 的总和 nm。您可以使用以下类型 Int => Int 在 Scala 中表达这个想法。因此,您可以同样完成函数的类型:

def f(n: Int): Int => Int = (m: Int) => n + m

关于 REPL:

scala> def f(n: Int): Int => Int = (m: Int) => n + m
f: (n: Int)Int => Int

如果……怎么办

scala> :t f(1)
Int => Int

还有...

scala> :t f(1)(2)
Int

所以我可以这样说:

scala> def addTwo = f(2)

你能猜出 addTwo 的类型吗?

scala> :t addTwo
???

我建议您尝试并熟悉这些结构,它们确实可以让您的代码更干净、更智能。