[Kotlin] 고차함수..

kim hyun woo·2022년 7월 12일
2
post-thumbnail

오늘은 고차함수를 더 잘 사용하고 싶어서 공부해봤다.. 머리아푸다....


일단 람다함수 기본식부터 알아보자

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

...현타가 온다
오늘공부는 여기까지 해야겠다..수고..

profile
TIL(Today I Learned)

0개의 댓글