본문 바로가기
Kotlin

Kotlin - 일급 시민(First-class citizen)

by sinabeuro 2023. 8. 8.
728x90

 

 

일급 시민 (First-class citizen)

코틀린의 일급 시민 (First-class citizen)은 함수나 객체 지향 프로그래밍 언어에서 어떤 개체가 다른 객체들과 동일한 조건으로 사용될 수 있을 때 그 개체를 일급 개체 또는 일급 값이라고 합니다. 코틀린에서는 주로 함수를 일급 시민으로써 다룹니다, 이로 인해 여러 프로그래밍 패러다임을 지원하게 됩니다.

 

 

1. 변수에 할당할 수 있다.
함수를 변수에 할당할 수 있으며, 이 변수를 통해 함수를 호출할 수 있습니다.

val greet: (String) -> Unit = { name -> println("Hello, $name!") }
greet("Alice")

 

2. 함수의 인자로 전달할 수 있다.
함수를 다른 함수의 인수로 전달할 수 있습니다.

fun operate(x: Int, y: Int, operation: (Int, Int) -> Int): Int {
    return operation(x, y)
}

val sum: (Int, Int) -> Int = { a, b -> a + b }
println(operate(5, 3, sum))

 

3. 함수의 반환값으로 사용할 수 있다.
함수에서 다른 함수를 반환할 수 있습니다.

fun multiplier(factor: Int): (Int) -> Int {
    return { number -> number * factor }
}

val double = multiplier(2)
println(double(3))

 

4. 데이터 구조 내에서 사용할 수 있다.
리스트나 맵 같은 데이터 구조에 함수를 저장할 수 있습니다.

val actions: List<() -> Unit> = listOf(
    { println("First action") },
    { println("Second action") }
)
actions.forEach { it() }

 

5. 익명 함수나 람다를 생성할 수 있다.
이름 없이 함수를 정의하고 사용할 수 있습니다.

val subtract: (Int, Int) -> Int = { a, b -> a - b }
println(subtract(5, 3))

 

이러한 특징들은 고차 함수, 람다, 함수형 프로그래밍 스타일 등 코틀린의 강력한 기능을 활용하는 데 중요한 역할을 합니다.

 

 

 

 

728x90

'Kotlin' 카테고리의 다른 글

Kotlin - 테스트 코드 어노테이션 및 MockMvc 테스트  (0) 2024.01.10
Kotlin - Any 와 * 의 차이  (0) 2023.10.26
Kotlin - 다양한 함수  (0) 2023.05.06
Kotlin - 컬렉션  (0) 2023.05.06
코틀린 - Object 함수(Companion)  (0) 2023.05.01

댓글