운기의 블로그
코틀린 - 코틀린의 함수는 1급 함수이다 !?! 본문
자바로 안드로이드를 개발하다 코틀린으로 넘어가면서 신기한 모양?을 보게 되었다.
변수에 조건문에 대한 값을 바로 넣는다고??
어떻게 이런일이 가능한지에 대해 알아보기 시작했다.
우선 위와 같은 일이 가능한 이유는 코틀린이 "함수형 프로그래밍" 을 지원한다는 사실을 알아야한다.
함수형 프로그래밍에서 함수는 "일급 함수" 이다.
일급 시민?
computer science에서는 어떤 프로그램언어의 함수가 일급시민이라면, 일급 함수를 가지고 있다라고 말한다.
사실 이것만 보고는 무슨말인지 알기 어려울것이다. 저 역시도 이부분에 대해서 이해가 되지않아 많은 시간을 사용했다.
최대한 이해한대로 쉽게 써보려고한다.
우선 "일급시민" 에 대해서 알아보자.
영어로는 First-class-citizen으로 단어 뜻은 공정한 대우를 받는 집단의 구성원을 말한다.
어떠한 혜택이 있는게 아닌 아무런 차별없이 없다는 뜻을 의미한다.
이 의미를 프로그래밍에 확장해보면 다른 entity에서 사용 하는 작업을 지원하는 엔터티라고 생각하면된다.
그리고 1급시민이 가져야하는 조건이 있다.
- 인수로 전달
- 함수에서 반환
- 변수에 할당
3가지 조건은 대부분의 우리가 익숙하게 사용했던 방법인데,
쉽게 풀어쓰면
매개변수로 전달 가능하고, 함수에서 return 값으로 반환 가능하며, int a =1 과 같이 변수를 할당 가능해야 한다는걸 의미한다.
일급 함수?
코틀린의 함수는 일급 함수이다.
이 말을 다시 정리해 보면 코틀린의 함수가 일급시민이기 때문에 코틀린 함수는 일급함수이다 라고 정리 할 수 있을것이다.
일급함수는 일급시민의 조건을 그대로 충족해야한다는 이야기인데
- 함수는 인수로 전달 가능
- 함수는 함수를 반환 가능
- 함수는 변수에 할당 가능
이라는 이야기이다.
그렇기때문에 기존에 if 문 또는 switch 문에서는 변수를 선언하고 해당 분기에 따라 선언한 변수에 값을 넣어주는 방식이였지만 코틀린의 when에서는 위의 이미지처럼 해당 분기에 결과값을 변수에 바로 할당 할 수 있는 것이다,
'코틀린' 카테고리의 다른 글
코틀린 - mutable / immutable collection으로 나뉘어진 이유 (0) | 2022.03.25 |
---|---|
코틀린 - Collection (0) | 2022.03.24 |
코틀린 - when (0) | 2022.03.22 |