일단 람다함수 기본식부터 알아보자
var ### = {x : Int, y: Int -> x + y } 요런식이다..
보는 것보단 만드는게 백 번 낫다는 말이 있다..누가그랬지?
fun main(){
var sum = {x : Int, y : Int -> x + y}
println(sum(1,2))
}
이렇게 구성해봤다 놀랍게도 저 한줄로 함수를 만들어 변수에 넣어주었다.
결과는
3
정말 간단하다. 잘만쓴다면 강력한 무기가 될 것 같다..
잘쓸려면 아직 멀었지만..
이제 익명함수를 알아보자
익명함수는 말그대로 이름이 없는 함수이다..
fun ### (x : Int, y : Int , lambda: (x : Int, y : Int) -> Int){
///
}
이런 느낌이다..굉장히 복잡하네..? 그래 일단 예를 들어보자 ^^
fun calculator(x : Int, y : Int, lambda : (x : Int, y: Int) -> Int) {
println("${lambda(x,y)}")
}
이런식으로 함수 구성을 했다.. 람다를 파라미터로 받는 순간 요 녀석은 고차함수가 된다.
메인에서 호출 할 때 파라미터를 어떻게 넣는지도 잘 보자..
fun main(){
calculator(1,2,{x : Int, y : Int -> x + y})
}
요런식으로 넣으면 된다. 람다함수는 {}괄호가 꼭 필요하다.
근데 요즘 코틀린이 많이 발전해나가서 이렇게도 된다고 한다.
fun main(){
calculator(1,2) { x: Int, y: Int -> x + y }
}
람다함수를 밖으로 분리시켜준 것이다. 이게 훨씬 가독성이 좋다.
코틀린에 공부는 끝이 없을 것 같다..ㅎㅎ
그럼 메인에서 호출 할 때 함수형 변수를 넣을 수 있을까..?
당연히 넣을 수 있다 ^^ 신난다
fun main(){
val minus = {x : Int, y: Int -> x - y}
calculator(1,2, minus)
}
이런식으로 함수형 변수를 만들어 파라미터로 넣을 수 있다.
결과값은 뭘까요?? ㅎㅎ
-1
...현타가 온다
오늘공부는 여기까지 해야겠다..수고..