코틀린 강좌 #13 고차함수와 람다함수

Kotlin/기본 문법 · 2020. 12. 19. 12:24

테크과학! DiMo

 

테크과학! DiMo

개발자가 얘기하는 생활 속 IT기술에 대한 과학! 여러분이 몰랐던, 혹은 정확히 알지 못했던 IT 테크놀러지를 파드립니다! 좋은 영상을 위한 채널 후원, 투네이션을 통해서 해주세요! 후원링크 htt

www.youtube.com

 

 

개발 환경: play.kotlinlang.org


 

고차함수란?

 


함수를 마치 클래스에서 만들어낸 '인스턴스처럼' 취급하는 방법

 

 

함수를 '패러미터'로 넘겨줄 수도 있고 '결괏값으로 반환' 받을 수도 있는 방법

 


코틀린에서는 모든 함수를 고차함수로 사용 가능하다.

 

 

fun main() {
   b(::a)
   // 고차함수 형태로 넘기려면 함수 이름 앞에 콜론을 두개 붙여준다
   
    
    // 람다 함수
    val c:(String) -> Unit = {str -> println("$str 람다함수")}
    // 람다함수 역시 변수에 할당할 때는 타입추론 기능을 이용하여 축약 가능.
    // val c = {str:String -> println("$str 람다함수")}
}

fun a (str: String) {
    print("$str 함수 a")
}

// (자료형, 자료형, ...)[파라미터] -> 자료형[반환형]
// 값이 없다는 형식인 Unit
fun b (function: (String)->Unit) {
    function("b가 호출한")
}

// 람다함수는 일반함수와 달리 그 자체가 고차함수 이다.

 

 

 

 

고차함수 동작 과정

 

 

 

 

람다함수 타입 추론 과정 및 타입 생략 플로우