본문 바로가기

프로그래밍 언어/코틀린_쌩초보를 위한 기초

쌩초보를 위한 기초_13_함수의 진화C

Lambda functions (람다 함수)

와 

Function Reference (함수 참조)

 

이번에는 고차함수를 구현하기 위해 사용하는 람다 표현과 함수 참조에 대해 살펴본다.

 

main()함수 밖에 고차 함수를 하나 만들자.

함수명은 calculate(계산하다)로 한다.

 

fun calculate(x: Int, y: Int, work: (Int, Int) -> Int): Int { }

매개변수는 3 (x, y , work) 이다

매개변수 work의 타입(Type)이 람다함수로 되어있다.

그 모양은 Int타입 2개를 하나의 Int타입으로 만든다.

그 다음에 콜론( : )으로 구분한 후 뒤에 반환형(Return Type)이 표시되어 있다.

 

이제 고차함수 work가 들어오는 인자(argument)를 받아서 그 결과를 반환하도록 리턴문을 작성해 본다.

    return work(x, y)

 

덧셈 함수를 하나 만들자.

함수 이름은 합하다(sum)으로 한다.

fun sum(x: Int, y: Int) = x + y

sum 함수는 work에 맞는 형태로 선언되어 있다는 것이 핵심이다.

 

 

이제 main()함수에서 calculate()함수를 활용해서 값을 넣어볼 변수를 만들어 보자.

변수명은 sumResult(더하기 결과)로 한다.

 

    val sumResult = calculate(2, 3, ::sum)

 

 

변수 sumResult(더하기 결과) calculate 함수의 매개변수 x, y인자로 2, 3을 넘기고

work인자는 sum함수를 참조하라는 뜻이다.

참조 기호는 :: 콜론2개 (더블콜론)를 연결하여 사용한다.

calculate함수는 2,3을 넘겨받아 sum함수의 더하기 계산을 참조하여 두 개의 Int값을 한 개의 Int값으로 반환하게 된다.

 

출력해 보자

println(“SumResult: $sumResult")

 

 

이번에는 calculate함수에 직접 람다를 사용해서 곱셈을 해보자.

곱셈 결과를 저장할 변수명은 multiplyResult(곱하기 결과)로 한다.

 

val multiplyResult = calculate(2,3) { a, b -> a * b }

 

 

여기서는 calculate 함수에 2, 3인자와 함께 work인자에는 직접 계산에 사용할 람다표현을 붙인 예이다.

매개변수 operation2,3 인자와 함께 람다표현도 전달되어 곱셈 후 하나의 Int값으로 반환하게 된다.

 

출력해서 확인 해 보자.

 

여기까지 고차함수에 대해 간단한 개념을 살펴 보았다.

 

정리하면

 

  • 람다 표현은 변수정의 -> 실행코드 처럼 만든다.
  • 함수를 람다 표현으로 작성하면 다른 함수를 더블콜론( :: )을 사용하여 참조할 수도 있고
  • 직접 람다 함수를 사용해서 이용할 수도 있다.

 

고차함수에서 사용하는 람다표현은 다양한 형식을 가지고 있고 활용도 무궁무진하다.

이 이상 다루기는 현재의 실력으론 무리다.

더 깊은 내용은 열심히 배워서 다음에 글을 쓰기로 하고 여기서는 기본 개념만 확실히 잡으면 될 것이다.

수학도 마찬가지지만 기본 개념이 가장 중요하다.

 

끝.