我试图了解scala中的部分应用函数
scala> val a=sum _
a: (Int, Int, Int) => Int = <function3>
scala> a(1,2,3)
res7: Int = 6
我只是给这个val a=sum _
我想了解scala如何解释它将需要3个参数
a: (Int, Int, Int) => Int = <function3>
答案 0 :(得分:1)
您刚刚体验到将eta-expansion
转换为method
的{{1}}。
您的方法是function
,您没有演示,但根据功能版本必须:
sum
您最后添加的下划线是将您的方法转换为函数,因为结果的描述性类型签名显示:def sum(a:Int,b:Int,c:Int):Int = a + b + c
通过这种方式,您可以将方法转换为函数值,该值可以分配给变量并在应用程序逻辑中传递,从而传达对数据的行为更改(在您的实例中添加)。 / p>