고차 함수란 일급 함수라고 했다. 즉, 변수가 함수 역할을 할 수 있다.
일급 함수라는 점을 이용해서, 변수에 함수를 참조해서 변수를 통해서 해당 함수를 사용해보자.
일급 함수를 이용한 고차함수의 활용
경우 - 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 클래스에 선언된 메소드를 활용해서 함수를 전달할 수 있다.
'2학년 2학기 > 모바일 소프트웨어 - 코틀린' 카테고리의 다른 글
람다식(2) - it, _ 사용 (0) | 2024.10.10 |
---|---|
람다식(1) - 기본적인 선언과 호출, 고차함수와의 사용 (0) | 2024.10.10 |
고차함수(1) - 선언과 사용 (0) | 2024.10.10 |
Kotiln - 함수 (0) | 2024.10.10 |
Class(1) - 중첩 클래스와 내부 클래스 (0) | 2024.10.01 |