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인자에는 직접 계산에 사용할 람다표현을 붙인 예이다.
매개변수 operation에 2,3 인자와 함께 람다표현도 전달되어 곱셈 후 하나의 Int값으로 반환하게 된다.
출력해서 확인 해 보자.
여기까지 고차함수에 대해 간단한 개념을 살펴 보았다.
정리하면
- 람다 표현은 변수정의 -> 실행코드 처럼 만든다.
- 함수를 람다 표현으로 작성하면 다른 함수를 더블콜론( :: )을 사용하여 참조할 수도 있고
- 직접 람다 함수를 사용해서 이용할 수도 있다.
고차함수에서 사용하는 람다표현은 다양한 형식을 가지고 있고 활용도 무궁무진하다.
이 이상 다루기는 현재의 실력으론 무리다.
더 깊은 내용은 열심히 배워서 다음에 글을 쓰기로 하고 여기서는 기본 개념만 확실히 잡으면 될 것이다.
수학도 마찬가지지만 기본 개념이 가장 중요하다.
끝.
'프로그래밍 언어 > 코틀린_쌩초보를 위한 기초' 카테고리의 다른 글
쌩초보를 위한 기초_15_조건문 when (0) | 2020.03.17 |
---|---|
쌩초보를 위한 기초_14_조건문 if else (0) | 2020.03.14 |
쌩초보를 위한 기초_12_함수의 진화B (0) | 2020.03.13 |
쌩초보를 위한 기초_11_Type검사와 null (0) | 2020.03.11 |
쌩초보를 위한 기초_10_함수의 진화A (0) | 2020.03.11 |