개발/안드로이드
[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에 관한 블로그 글을 쓰겠다.
반응형