앞 글에서 람다를 이용하여 함수를 다른 함수 인자로 전달했다.
앞 글에 이어서 여기서는 인자를 전달할 때 함수참조를 사용하는 방법을 알아본다.
함수 참조
함수참조는 일반적인 함수(fun으로 정의한 함수)를 인자로 전달한다.
lotteryPrizeMoney(복권 당첨금) 함수를 만든다.
runTest함수에 prizeMoney(상금)을 함수 참조 매개변수로 추가한다.
이 매개변수를 사용하여 상금을 출력하는 코드를 추가한다.
함수를 참조할 때는 연산자 :: 를 사용한다.
lotteryPrizeMoney 함수를 참조한 후 이것을
runTest 함수의 매개변수 prizeMoney 인자로 전달한다.
함수타입을 반환타입으로 사용하기
congratulation(축하) 함수를 만들어 보자
이 함수는 지역 변수(포상형태, 돈)를 선언하고 람다에 포함시킨 후 반환하는 함수이다.
이제 이 함수를 호출하는 runTest()함수를 만들고 main함수에서 실행하면 결과가 나온다.
이렇게 지역변수를 람다에 포함시켜 반환하면 다른 함수(runTest)에서 실행할 수 있다.
이것이 가능한 이유는 코틀린의 람다는 closure(클로저)이기 때문이다.
closure는 close+over (뒤덮다)의 뜻이다.
클로저의 기능은 다른 함수에 자신의 매개변수와 변수를 사용할 수 있게 하는 것을 말한다.
위의 함수처럼 다른 함수를 인자로 받거나 반환하는 함수를 고차함수(Higher order function)이라고 한다.
클로저 기능의 또 다른 예를 살펴보자.
람다함수(익명함수)가 범위 밖에 정의된 변수를 참조하여 변경할 수 있다.
변수money가 람다 외부에 정의되어 있는데 그 변수에 2를 곱해서 저장하는 코드를 넣는다.
그리고 runTest함수에서 호출을 한번 더 하면 어떤 결과가 나오는 지 확인해 보자.
결론적으로 람다 표현과 함께 함수타입, it 키워드, 클로저 등의 기능을 사용하면 코드의 양이 줄어들고 유연하게 작성할 수 있다는 장점이 있다.
여기까지 람다와 함수참조를 알아보았다.
끝.
Wraven...
'프로그래밍 언어 > 코틀린_Kotlin_더파기' 카테고리의 다른 글
Kotlin더파기_07_String_문자열 (0) | 2020.04.20 |
---|---|
Kotlin더파기_06_Null & Exception_널과 예외 (0) | 2020.04.12 |
Kotlin더파기_04_Anonymous Function_익명함수 (0) | 2020.04.10 |
Kotlin더파기_03_Function_함수 (0) | 2020.04.05 |
Kotlin더파기_02_Control Flow 흐름제어 (0) | 2020.04.04 |