코틀린 람다함수와 고차함수

이동욱·2023년 11월 28일
0

람다함수란?

람다함수는 간단히 말해 익명 함수로 한번만 사용되거나 간단한 연산을 표현할 때 유용하다.

코틀린에서 람다함수는 💡일급 객체로 취급되기 때문에 람다 함수를 변수에 담고, 함수의 파라미터 혹은 반환값으로 사용 될 수 있다.

람다는 { 파라미터 → 함수 본문 } 형식을 띄고 있다.

예시
1. 타입선언 방식

val sum: (Int, Int) -> Int = { x, y -> x + y }

2. 타입추론 방식

val sumTwo: { x:Int, y:Int -> x + y }

💡 일급 객체란?
1. 변수에 할당할 수 있어야 한다.
2.
함수의 매개변수로 전달할 수 있어야 한다.
3.
함수의 반환값에 사용될 수 있어야 한다.

고차함수란 ?

고차함수는 함수를 변수처럼 다루어 파라미터로 전달하거나 다른 함수의 반환값으로 받는 특별한 함수이다.

이는 코틀린에서 람다 함수함수 참조를 활용하여 함수를 값으로 사용할 수 있음을 의미합니다.

이를 통해 코드를 더 간결하게 작성할 수 있습니다. 예를 들어, 맵(map), 필터(filter), 리듀스(reduce)와 같은 고차함수는 반복적으로 사용되는 로직을 간편하게 적용할 수 있도록 도와줍니다.

예시
1. 람다

fun main () {
  fun operateOnNumbers(x: Int, y: Int, operation: (Int, Int) -> Int): Int {
    return operation(x, y)
  }

 	// 람다 - 타입 선언
	val sum: (Int, Int) -> Int = { x, y -> x + y }
	// 람다 - 타입 추론
	val sumTwo = { x:Int, y:Int -> x + y }

  println(operateOnNumbers(1, 2, sum))      // 출력: 3
  println(operateOnNumbers(2, 3, sumTwo))      // 출력: 5
}

2. 함수 참조

코틀린에서는 ‘::’ 연산자를 활용하여 함수를 참조해 함수를 일급 객체로서 활용할 수 있다.

fun main () {
   fun operateOnNumbers(x: Int, y: Int, operation: (Int, Int) -> Int): Int {
    return operation(x, y)
   }

   fun add(a:Int,b:Int):Int{
       return a + b
   }
  // '::'제거시 오류
  val sumThree = ::add

  println(operateOnNumbers(3, 4, sumThree))  // 출력: 7
}
profile
프론트엔드

0개의 댓글