接受 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 的总和 n
和 m
。您可以使用以下类型 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
???
我建议您尝试并熟悉这些结构,它们确实可以让您的代码更干净、更智能。
有人可以解释一下,如何使用 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 的总和 n
和 m
。您可以使用以下类型 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
???
我建议您尝试并熟悉这些结构,它们确实可以让您的代码更干净、更智能。