4. SCALA : Functional Programming
Higher order function.: If one function takes another function as parameter => we call
webconsole
spark2-shell
//pass function at run time, runtime we will decide
def sum(fun:Int=>Int, a:Int, b:Int)
:Int={
if(a == b){
fun(a)
}
else{
fun(a) + sum(fun,a+1,b)
}
}
def firstPower(input:Int):Int= {Input}
sum(firstPower,1,3)
// O/p = 6
def secondPower(input : Int):Int={Input * Input}
sum(secondPower,1,3)
// o/p = 14
Anonymous function (Same as above but its Anonymous)
-----------------------
sum(x => x, 1,3)
sum(x => x * x, 1,3)
sum(x => x * x * x, 1,3)
Higher order function examples (map is higher order func takes func as
map (higher order function - means takes function as input parameter)
--------------------------------
var arr = Array("pavan","madhu","amar")
arr.map(x => x.length() ).foreach(println)
arr.map(x => x.trim() ).foreach(println)
arr.map(x => x.replace(" ","") ).foreach(println)
//depending true/false it will filter
Array(1,2,3,4,5).filter(x => x%2 == 0).foreach(pritnln)
2
4
Array(1,2,3,4,5).map(x => x*x).foreach(pritnln)
1 4 9 16 25
Reduce - HOF (Again higher order function - means takes function as input parameter)
1 2 3 4 5
x y x+y
1 2 = 3
3 3 = 6
6 4 = 10
10 5 = 15
println(Array(1,2,3,4,5).reduce((x,y) => x+y)))
println(Array(1,2,3,4,5).reduce((x,y) => scala.math.max(x,y)))
5
FlatMap (HOF)
#####################
Takes func as input
return Array
FlatMap - convert them in to individual item
var arr = Array("pavan","madhu","amar")
arr.flatMap(x => x).foreach(println)
p
a
v
a
n
m
a
d
h
u
a
m
a
r
var arr = Array("pavan malatkar","madhu hiraskar","amar ganapathi")
arr.flatMap(x => x.split(" ")).foreach(println)
pavan
malatkar
madhu
hiraskar
amar
ganapathi
arr.flatMap(x => x).foreach(println) -> Here x is returning as it is, but flatMap will do it as individual char
arr.flatMap(x => x.split(" ")).foreach(println) -> Here it is not returning simply x, we have overriden logic to do split
No comments:
Post a Comment