Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala中的部分应用函数_Scala - Fatal编程技术网

scala中的部分应用函数

scala中的部分应用函数,scala,Scala,我试图理解scala中部分应用的函数 scala> val a=sum _ a: (Int, Int, Int) => Int = <function3> scala> a(1,2,3) res7: Int = 6 您刚刚经历了将方法转换为函数的eta扩展 您的方法是sum,您没有演示该方法,但该方法基于函数版本,必须: def sum(a:Int,b:Int,c:Int):Int = a + b + c 最后添加的下划线将方法转换为函数,结果的描述性类型签名

我试图理解scala中部分应用的函数

scala> val a=sum _
a: (Int, Int, Int) => Int = <function3>

scala> a(1,2,3)
res7: Int = 6

您刚刚经历了将
方法
转换为
函数的
eta扩展

您的方法是
sum
,您没有演示该方法,但该方法基于函数版本,必须:

def sum(a:Int,b:Int,c:Int):Int = a + b + c
最后添加的下划线将方法转换为函数,结果的描述性类型签名显示:
(Int,Int,Int)=>Int


通过这种方式,您可以将方法转换为一个函数值,该函数值可以分配给变量,并在应用程序逻辑中传递,从而向数据传递行为变化(在实例中添加).

在这个用例中,方法和函数之间有什么区别?添加了关于为什么以及在方法/函数上下文中实现了什么的信息。@Avihoomaka Scala方法和函数之间的区别主要在于它们如何转换到各自的JVM世界。Scala方法与Java方法相同,它们要么作为实例的成员存在,要么存在于静态上下文中。而Scala函数本身是
Function1
Function2
FunctionN
类的实例,具体取决于参数的数量。
def sum(a:Int,b:Int,c:Int):Int = a + b + c