본문 바로가기
2학년 2학기/모바일 소프트웨어 - 코틀린

고차함수(2) - 응용편

by kkkkk1023 2024. 10. 10.

고차 함수란 일급 함수라고 했다. 즉, 변수가 함수 역할을 할 수 있다. 

일급 함수라는 점을 이용해서, 변수에 함수를 참조해서 변수를 통해서 해당 함수를 사용해보자.

 

일급 함수를 이용한 고차함수의 활용

경우 - 1

val strToLower: (String) -> String = String::lowercase
//String 클래스의 lowercase 메소드를 사용해서 해당 메소드이 인자로 String을 전달하고 결과를 String으로 받아오는 변수
val s: String = "My Lovely Baby"

println(strToLower(s)) //my lovely baby

 

이렇게 변수가 함수 역할을 할 수 있다는 점을 이용해서 String 클래스의 lowercase 메소드를 참조하여 해당 변수를 이용해서 문자열을 모두 소문자로 변경할 수 있다.

 


 

경우 - 2

val strToLower: String.() -> String = String::lowercase
val s: String = "My Lovely Baby"

println(s.strToLower()) //my lovely baby

 

String.()는 인자가 없는 String 클래스의 메소드를 뜻한다. 

String.()는 수신자 객체라고 한다.

 


 

경우 - 3

val intTimes: Int.(Int) -> Int = Int::times
var a: Int = 4
println(a.intTimes(2)) //8

 

 


 

경우 - 4

fun multuply(a: Int, b: Int, func:(Int, Int) -> Int): Int {
    return (func(a, b))
}

fun main() {
    val result = multuply(2, 2, Int::times) //4
}

 

 

이렇게 고차함수를 선언하고, 따로 함수를 선언하지 않고 Int 클래스에 선언된 메소드를 활용해서 함수를 전달할 수 있다.