gpt4 book ai didi

Scala,Currying 多参数组方法?

转载 作者:行者123 更新时间:2023-12-04 05:44:24 27 4
gpt4 key购买 nike

我想知道是否可以在多参数组函数上使用柯里化(Currying):

scala> def sum(a: Int)(b: Int): Int = { a+b }
sum: (a: Int)(b: Int)Int

scala> sum(3)(4)
res2: Int = 7

scala> val partFunc = sum(3) _
partFunc: Int => Int = <function1>

scala> partFunc(4)
res3: Int = 7

scala> val partFunc2 = sum _ _
<console>:1: error: ';' expected but '_' found.
val partFunc2 = sum _ _
^

scala> val partFunc2 = (sum _) _
<console>:8: error: _ must follow method; cannot follow Int => (Int => Int)
val partFunc2 = (sum _) _

最佳答案

简单写sum _sum 的论点没有任何关系, 而是简单区分函数对象sum从函数的应用。

因此,您可以编写:

scala> val partFunc2 = sum _
partFunc2: Int => (Int => Int) = <function1>

从类型信息可以看出,这已经是 sum的curried版本了这需要两个 Int参数。

当然,您可以像以前一样继续使用 partFunc2(4)属于 Int => Int 类型等等。

关于Scala,Currying 多参数组方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880982/

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