코틀린에서 스코프(Scope)란?
2025. 5. 20. 16:32ㆍ프로그래밍 언어
728x90
반응형
프로그래밍에서 "스코프(scope)"는 변수나 함수, 클래스 등의 이름(식별자)이 유효한 범위를 뜻한다.
코틀린(Kotlin)에서는 이 개념이 특히 중요한데, 코드의 안정성, 가독성, 유지보수성에 큰 영향을 주기 때문이다.
스코프(Scope)란?
어떤 이름(식별자)이 어디서부터 어디까지 유효한지(접근 가능한지)를 결정짓는 논리적 범위.
스코프가 중요한 이유
- 이름 충돌 방지: 서로 다른 블록에 같은 이름 사용 가능
- 캡슐화: 외부에 불필요한 정보 숨기기
- 가독성/유지보수 향상: 필요한 곳에서만 변수 사용 가능
코틀린의 주요 스코프 종류
1. 로컬 스코프 (Local Scope)
- 함수나 블록 내부에서 선언된 변수
- 해당 블록 내에서만 유효
fun greet() {
val name = "Bbang_9999u" // 로컬 스코프
println(name)
}
// println(name) // ❌ 오류 발생: 스코프 밖
2. 클래스 스코프 (Class Scope)
- 클래스 내부의 변수/함수는 클래스 범위에서 접근 가능
class User {
val name = "Bbang_9999u"
fun printName() {
println(name) // 클래스 스코프 내 접근 가능
}
}
3. 패키지 스코프 (Package Scope)
- Kotlin에서는 top-level 함수/변수 정의 가능
- 같은 패키지 안이라면 어디서든 접근 가능 (접근 제한자 주의)
// 파일: AppConfig.kt
val apiKey = "abc123"
fun getVersion() = "1.0.0"
// 같은 패키지의 다른 파일
fun showInfo() {
println(apiKey) // 접근 가능
println(getVersion())
}
4. 파일 스코프 (File Scope)
- Kotlin은 하나의 파일에 여러 선언 가능
- 특정 어노테이션을 파일 단위로 적용할 수 있음
@file:Suppress("unused")
5. 중첩 스코프 (Nested Scope)
- 내부 블록은 외부 변수에 접근 가능
- 하지만 외부 블록은 내부 변수에 접근 ❌
fun outer() {
val outerName = "Outside"
if (true) {
val innerName = "Inside"
println(outerName) // ✅ 가능
}
// println(innerName) // ❌ 불가능
}
보너스: 스코프 함수 (let, run, apply, also, with)
Kotlin에는 "스코프 함수" 라는 것도 있다.
이건 객체를 특정 블록 안에서 일시적으로 다루기 좋게 만든 함수들이다.
참고 링크 : Kotlin에서 유용한 고차 함수 정리
728x90
반응형
'프로그래밍 언어' 카테고리의 다른 글
헬퍼 함수(Helper Function) (0) | 2025.05.16 |
---|---|
객체지향 언어와 함수형 언어, 그리고 Java와 Kotlin의 관계 (0) | 2025.01.16 |