공상하는 개발자

[Kotlin] Higher-Order Functions 이란? 본문

개발/안드로이드

[Kotlin] Higher-Order Functions 이란?

공상과학소설 2020. 2. 2. 22:28
반응형

Higher-Order Functions

-> 함수를 변수로 넘겨주거나, 이를 반환하는 것을 의미한다.

fun <T> prints(printFun: (keyword: String) -> T): T {
    return printFun("hello world!")
}

 

prints 함수에 포함된 parameter인  printFun : (keyword: String) -> T  가 Higher-Order Functions에 해당한다.

 

  • printFun : parameter 이름
  • (keyword: String) -> T : (keyword: String) parameter가 String 타입의 keyword인 메서드를 정의하였고, ->T는 retrun 타입을 정의한다.
prints(printFun = {
        print(it)	//hello world! 출력
    })

    prints {
        print(it)	//hello world! 출력
    }

 

위처럼 다른 형태의 두 함수는 똑같은 작동을 한다. 저런 식으로 higher-Order Functions을 사용 가능하다.

 

 

위의 경우는 파라미터가 1개인 경우인데 2개 이상인 경우를 알아보자

 

fun prints(printFun: (first: String, second: String) -> String) {
    println(body("김찬영", "26살"))
}

fun main(args: Array<String>) {
    prints { first, second -> "이름은 $first 나이는 $second" }
}

first 는 printFun의 첫 번째 파라미터이고 second는 두 번째 파라미터이다. 순서대로 사용하면 된다.


결론

Higher-Order Functions 는 함수를 좀 더 다양하게 사용하게 해 주고, 좀 더 편하게 코드를 짤 수 있게 해 준다. Generic와 함께 쓰면 좀 더 좋은 코드를 사용할 수 있을 것 같아서 Generic에 관한 블로그 글을 쓰겠다. 

반응형
Comments