gpt4 book ai didi

scala - 在 Scala 中缺少所有参数的部分应用函数

转载 作者:行者123 更新时间:2023-12-04 22:32:33 24 4
gpt4 key购买 nike

根据我的理解,部分应用的函数是函数,我们可以在不调用的情况下调用它们
传递所有/一些必需的参数。

def add(x:Int, y:Int) = x + y
val paf = add(_ :Int, 3)
val paf1 = add(_ :Int, _ :Int)

在上面的例子中,paf1 指的是部分应用函数,所有参数都丢失,我可以调用使用: paf1(10,20),原始函数可以使用 add(10,20) 调用

我的问题是,创建一个缺少所有参数的部分应用函数有什么额外的好处,因为调用语法几乎相同?只是将方法转换为一流的函数吗?

最佳答案

Scala 的 def 关键字是您定义方法的方式,而方法不是函数(在 Scala 中)。所以你的 add 不是你的 paf1 那样的一流函数实体,即使它们在语义上等同于它们在产生结果时对参数所做的事情。

Scala 将自动使用部分应用程序将方法转换为等效函数,您可以通过稍微扩展示例来查看:

def add(x: Int, y: Int) = x + y
...
val pa2: (Int, Int) => Int = add
pa2: (Int, Int) => Int = <function2>

这在本例中似乎没什么好处,但在许多情况下,存在指示需要函数的非显式约束(或更准确地说,在其他地方显式指定的约束)允许您简单地给出(类型兼容的)方法名称需要函数的地方。

关于scala - 在 Scala 中缺少所有参数的部分应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203510/

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