Currying is a process of transforming multi argument functions into a function that takes just a single argument.
For example, we can write a function that takes two integers as argument and return the sum like below.
def incBy(x: Int) = (y : Int) => x + y
Below snippet calculate sum of two integers 10 and 20.
incBy(10)(20)
10 is passed as first argument (x) and 20 is passed as 2nd argument (y)
scala> def incBy(x: Int) = (y : Int) => x + y
def incBy(x: Int): Int => Int
scala>
scala> incBy(10)(20)
val res25: Int = 30
We can define other functions from incBy function.
scala> def incBy1 = incBy(1)
def incBy1: Int => Int
scala> incBy1(10)
val res26: Int = 11
scala> incBy1(23)
val res27: Int = 24
Scala provide simple way to define currying functions
For example, same incBy function we can define like below.
def incBy(x: Int)(y:Int) = x + y
def incBy1(a: Int) = incBy(1)(a)
scala> def incBy(x: Int)(y:Int) = x + y
def incBy(x: Int)(y: Int): Int
scala> def incBy1(a: Int) = incBy(1)(a)
def incBy1(a: Int): Int
scala> incBy1(10)
val res28: Int = 11
scala> incBy1(23)
val res29: Int = 24
No comments:
Post a Comment