<형식>람다식의 기본 모양
{<실행될 문장>}
ex)
{x,y -> x+y}
//원래의 함수
fun add(a:Int, b:Int) :Int {
return a+b
}
//람다식으로 변형된 함수
val addFunc = {a:Int, b:Int -> a+b }
함수를 호출할 때 함수를 파라미터로 전달하기
: 람다식으로 된 익명함 수를 다른 함수의 파라미터로 전달할 수 있음
fun main() {
val addFunc = {a:Int, b:Int -> a+b}
val result = calc(15,10, addFucn)
println(result)
}
fun calc(first:Int, second:Int, oper:(Int,Int) -> Int):Int {
return oper(first,second)
}
fun main(){
val addFunc = {a:Int, b:Int -> a+b}
val result = calc(15, 10, addFunc)
val addFunc2 = getOperator("add") //반환된 함수가 addFucn2변수상자에 들어감.
val result2 = calc(20,29, addFunc2!!)
println(result2)
}
fun getOperator(name:String):((Int,Int)->Int)?{
//함수가 밑으로 반환
var oper:((Int,Int)->Int)? = null
if(name == "add"){
oper = {a:Int, b:Int -> a+b}
}else if(name =="subtract"){
oper = {a:Int, b:Int -> a-b}
}
return oper
}
fun calc(first:Int, second:Int, oper:(Int,Int)->Int):Int{
return oper(first, second)
}