gpt4 book ai didi

scala - Scala中类似的 curry 类型之间的区别

转载 作者:行者123 更新时间:2023-12-04 04:00:10 25 4
gpt4 key购买 nike

以下两个函数的类型有什么区别?

def add1: Int => Int => Int = a => b => a + b
def add2(a: Int)(b: Int) = a + b

根据它们的声明,它们似乎具有相同的类型。两者的调用方式相同:
scala> add1(1)(2)
res2: Int = 3

scala> add2(1)(2)
res3: Int = 3

但是,它们的类型有明显的区别:
scala> :t add1
Int => Int => Int

scala> :t add2
(a: Int)(b: Int)Int

此外, add1的部分应用比 add2干净一些。
scala> add1(1)
res4: Int => Int = <function1>

scala> add2(1)(_)
res5: Int => Int = <function1>

最佳答案

add1是不带参数的方法,该方法返回Function1[Int, Function1[Int, Int]]add2是一种接受两个参数列表并返回Int的方法。

进一步阅读:

Difference between method and function in Scala

关于scala - Scala中类似的 curry 类型之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7705168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com