package com.scala.function
object test05_Lambda {
def main(args: Array[String]): Unit = {
val fun=(name:String)=>{
println(name)
}
fun("Alisa")
def f1(func: String=>Unit):Unit={
func("Alisa2")
}
f1(fun)
f1((name:String)=>{println(name)})
f1((name)=>{println(name)})
f1(name=>{
println(name)
})
f1( name=>println(name) )
f1( println(_) )
f1(println)
def dualFunctionOneAndTwo (fun:(Int,Int)=>Int):Int={
fun(1,2)
}
val add=(a:Int,b:Int)=>a+b
val minus=(a:Int,b:Int)=>a-b
println(dualFunctionOneAndTwo(add))
println(dualFunctionOneAndTwo(minus))
println(dualFunctionOneAndTwo((a:Int,b:Int)=>a+b))
println(dualFunctionOneAndTwo((a,b)=>a+b))
println(dualFunctionOneAndTwo(_+_))
println(dualFunctionOneAndTwo(_-_))
println("================================")
println(dualFunctionOneAndTwo((a,b)=>b-a))
println(dualFunctionOneAndTwo(-_+_))
}
}
