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  "설정하고 싶을 때"
둘 다 "임시 블록을 만들고 뭔가를 처리"하지만, 어떤 값을 리턴하느냐가 핵심 차이입니다.