Code Language/Kotlin
Kotlin에서 .let과 .apply의 차이점은 무엇인지? by chatGPT
rootkaien
2025. 6. 16. 13:54
[질문] : Kotlin에서 .let과 .apply의 차이점은 무엇인지
[질문의도]: Kotlin의 대표적인 스코프 함수인 let과 apply의 기능적 차이와 언제 어떤 것을 사용해야 하는지 알고자 함
[응답]:
✅ 핵심 차이 요약
항목letapply
리시버 참조 | it | this |
반환값 | 블록의 마지막 결과 | 원래 객체(self) |
주 용도 | 가공/변환, null-safe 처리 | 객체 초기화, 설정 목적 |
📌 1. .let의 특징
- 블록 안에서 객체를 it 으로 참조
- 블록의 결과값을 반환
✅ 사용 예
val name = "Kotlin"
val length = name.let {
println("Name: $it")
it.length
}
// length == 6
💡 언제 사용?
- 객체의 값을 변환해서 다른 타입으로 반환할 때
- null-safe 처리: nullable?.let { ... }
📌 2. .apply의 특징
- 블록 안에서 객체를 this 로 참조 (생략 가능)
- 블록 수행 후 자기 자신(원래 객체)를 반환
✅ 사용 예
val user = User().apply {
name = "홍길동"
age = 30
}
💡 언제 사용?
- 객체 초기화 시 필드 설정을 간단하게 처리할 때
🎯 실전 비교 예
// let: 계산 후 결과값 반환
val length = "Hello".let {
println(it)
it.length
} // => length: Int
// apply: 설정만 하고 자기 자신 반환
val sb = StringBuilder().apply {
append("Hello ")
append("World")
} // => sb: StringBuilder
✅ 결론 요약
구분.let.apply
참조 방식 | it | this (생략 가능) |
반환값 | 블록의 결과 | 객체 자기 자신 |
사용 목적 | 계산/변환/체이닝/nullable 처리 | 객체 구성/초기화 |
대표 상황 | val result = obj?.let { ... } | val obj = Obj().apply { ... } |
💡 정리 키워드:
let → "변환하고 싶을 때"
apply → "설정하고 싶을 때"
둘 다 "임시 블록을 만들고 뭔가를 처리"하지만, 어떤 값을 리턴하느냐가 핵심 차이입니다.