[Kotlin] 1급 시민(first-class citizen)이란?
1급 시민(first-class citizen)이란?
프로그래밍에서 1급 시민이란 다음의 조건을 충족하는 것을 말한다.
- 변수에 담을 수 있다.
- 함수의 인자로 전달할 수 있다.
- 함수의 반환값으로 전달할 수 있다.
1급 객체와 1급 함수?
1급 시민, 1급 객체, 1급 함수와 같이 비슷한 용어들이 존재하는데 그 미묘한 차이를 정리해보자.
1급 객체는 말 그대로 1급 시민의 조건을 충족하는 객체를 이야기한다. 코틀린의 함수는 객체로 사용할 수 있기 때문에 1급 객체에 속한다.
1급 함수는 1급 객체이면서 아래의 조건들은 추가로 만족하는 함수를 말한다.
- 런타임에 생성이 가능하다.
- 익명으로 생성이 가능하다.
코틀린과 1급 함수
코틀린의 함수는 1급(first-class)이다. 자바의 경우 함수는 클래스의 멤버의 역할만을 수행했지만, 코틀린에서는 함수 자체가 하나의 변수가 될 수 있다. 즉, 변수에 할당할 수 있으며 다른 고차 함수의 인자로 전달되고 반환될 수 있다.
1 | // 1. 변수나 데이터 구조에 할당 |
데이터 구조에 할당하는 예시는 다음과 같다.
1 | fun add(a: Int, b: Int) = a + b |
References
[Kotlin] 1급 시민(first-class citizen)이란?
https://june0122.github.io/2021/12/27/kotlin-first-class-citizen/