subho
subho

Reputation: 591

Partially applied function in scala

I am trying to understand Partially applied function in scala

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

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

I am just giving this val a=sum _

I want to understand how scala interprets it will take 3 arguments

a: (Int, Int, Int) => Int = <function3>

Upvotes: 2

Views: 148

Answers (1)

dimitrisli
dimitrisli

Reputation: 21381

You've just experienced the eta-expansion that is converting a method into a function.

Your method is sum which you are not demonstrating but based on the function version must be:

def sum(a:Int,b:Int,c:Int):Int = a + b + c

The underscore you are adding at the end is converting your method into a function as the descriptive type signature of the result shows: (Int, Int, Int) => Int

This way you are converting your method into a function value that can be assigned to a variable and passed around in your application logic conveying a behavioural change to your data (addition in your instance).

Upvotes: 1

Related Questions