根据我的理解,部分应用的函数是我们可以调用的函数,无需
传递所有/部分必需的参数。
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's def
关键字是你定义的方式methods和方法不是功能(在斯卡拉)。所以你的add
不是您的一流功能实体paf1
是的,即使它们在产生结果时对其参数所做的操作在语义上是等效的。
Scala 会自动使用部分应用程序将方法转换为等效函数,您可以通过稍微扩展示例来看到这一点:
def add(x: Int, y: Int) = x + y
...
val pa2: (Int, Int) => Int = add
pa2: (Int, Int) => Int = <function2>
在此示例中,这似乎没有什么好处,但在许多情况下,存在指示需要函数的非显式约束(或更准确地说,在其他地方显式指定的约束),允许您简单地在中给出(类型兼容的)方法名称您需要功能的地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)