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 |
댓글