학습
Kotlin 코틀린의 스코프 함수 (let, apply)
Kotlin 코틀린의 스코프 함수 (let, apply) — 초급
코틀린의 스코프 함수 (let, apply)
1. 도입 (왜 배워야 하는가)
코틀린의 스코프 함수는 코드의 가독성을 높이고, 객체의 속성에 쉽게 접근할 수 있도록 도와주는 유용한 기능입니다. 특히, 실무에서는 객체를 초기화하거나 설정하는 작업을 자주 하게 되는데, 이때 스코프 함수를 사용하면 코드가 더 간결하고 명확해집니다.
만약 스코프 함수를 사용하지 않는다면, 객체의 속성을 설정하기 위해 매번 객체 이름을 반복해서 입력해야 하므로 코드가 장황해지고, 실수로 잘못된 속성을 설정할 위험도 있습니다.
예를 들어, 객체를 생성한 후 여러 속성을 설정할 때 스코프 함수를 활용하면 코드가 일관되고 쉽게 유지보수할 수 있습니다.
2. 핵심 개념 설명
let
let 함수는 객체의 컨텍스트 내에서 코드를 실행할 수 있게 해주는 스코프 함수로, 주로 널 체크와 함께 사용됩니다.
비유: let은 마치 친구의 집에 가서 그 집에서만 할 수 있는 일을 하는 것과 같습니다. 집을 나서면 그 집의 물건이나 환경에 접근할 수 없으니까요.
apply
apply 함수는 객체의 속성을 초기화하거나 설정하는 데 유용한 스코프 함수입니다. 함수 내에서 객체를 this로 참조하여 속성에 접근할 수 있습니다.
비유: apply는 마치 요리사가 재료를 준비하고 조리하는 과정을 거치는 것과 비슷합니다. 요리사가 주방에서만 재료를 다룰 수 있는 것처럼, apply 안에서 객체의 속성을 조작할 수 있습니다.
| 함수 | 설명 | 사용 예시 |
|---|---|---|
| let | 객체의 컨텍스트 내에서 코드 실행 | null 체크 및 안전한 접근 |
| apply | 객체의 속성 초기화 및 설정 | 객체 생성 시 속성 설정 |
3. 기본 코드 예제
let 사용 예제
val name: String? = "Kotlin"
name?.let {
println("안녕하세요, $it!")
}
// 실행 결과: 안녕하세요, Kotlin!
name변수는 문자열 또는 null이 될 수 있습니다.let을 사용하여name이 null이 아닐 경우에만 코드를 실행합니다.it은let블록 내에서name의 값을 가리킵니다.
apply 사용 예제
data class Person(var name: String, var age: Int)
val person = Person("John", 25).apply {
age += 1 // 나이를 1 증가
}
println(person)
// 실행 결과: Person(name=John, age=26)
apply를 사용하여 person 객체의 속성을 설정 및 변경합니다.this 키워드 없이 객체의 속성에 직접 접근할 수 있습니다.4. 실전 활용 예제
쇼핑몰에서 장바구니를 구현할 때
data class CartItem(var name: String, var price: Double)
val cartItem = CartItem("사과", 1000).apply {
price *= 0.9 // 할인 적용
}
println(cartItem)
// 실행 결과: CartItem(name=사과, price=900.0)
apply를 사용해 할인 가격을 설정합니다.사용자 정보를 처리할 때
data class User(var username: String, var email: String?)
val user = User("alice", null).let {
it.email = "[email protected]" // 이메일 설정
it // 객체 반환
}
println(user)
// 실행 결과: User(username=alice, [email protected])
let을 사용합니다.5. 흔한 실수와 주의사항
실수 1: null 체크를 잊음
val name: String? = null
name.let { // NullPointerException 발생
println("안녕하세요, $it!")
}
let을 사용할 때는 항상 nullable 타입에 대해 null 체크를 해야 합니다.실수 2: apply와 let 혼동
val person = Person("Alice", 30).let {
it.age += 1 // 잘못된 접근
}
// 여기서 it이 Person 객체이므로 apply를 사용해야 함
let에서는 this를 사용할 수 없으므로, 객체 속성 조작에는 apply를 사용해야 합니다.6. 정리
let과 apply는 코드의 가독성을 높이고 객체 관리에 유용합니다.let은 null 체크와 안전한 접근에 적합하며, apply는 객체의 속성을 초기화하는 데 유용합니다.다음에 학습하면 좋은 주제는 코틀린의 다른 스코프 함수 (also, with)입니다. 이를 통해 다양한 패턴을 익힐 수 있습니다.