KOTLIN · 함수
스코프 함수 — let, run, apply, also, with
객체를 컨텍스트로 하는 코드 블록 실행. 각각 수신자(this/it)와 반환값이 다릅니다.
함수중급letrunapplyalsowith
핵심 설명
객체를 컨텍스트로 하는 코드 블록 실행. 각각 수신자(this/it)와 반환값이 다릅니다.
Kotlin code
data class Person(var name: String, var age: Int, var email: String = "")
// let — it 참조, 변환 결과 반환, null 체크 관용구
val name: String? = " Kotlin "
val result = name?.let { it.trim().uppercase() }
// result = "KOTLIN"
// apply — this 참조, 수신자 객체 반환 (빌더 패턴)
val person = Person("", 0).apply {
name = "Alice"
age = 30
email = "alice@example.com"
}
// also — it 참조, 수신자 객체 반환 (부가 작업)
val numbers = mutableListOf(3, 1, 4, 1, 5)
.also { println("원본: $it") }
.sorted()
.also { println("정렬: $it") }
// run — this 참조, 람다 결과 반환
val greeting = person.run {
"안녕, $name! 당신은 ${age}살입니다."
}
// with — 수신자를 인자로, 람다 결과 반환
val info = with(person) {
"$name ($age세) — $email"
}학습 팁
선택 기준: 객체 설정(빌더) → apply, null 체크/변환 → let, 부가 동작 추가 → also, 결과 계산 → run/with
주의할 점
apply 내부에서 this가 다른 클래스의 수신자와 충돌할 수 있습니다. 중첩 스코프 함수에서는 this@ClassName으로 명시하세요.
자주 묻는 질문
스코프 함수 — let, run, apply, also, with란 무엇인가요?
객체를 컨텍스트로 하는 코드 블록 실행. 각각 수신자( this / it )와 반환값이 다릅니다.
스코프 함수 — let, run, apply, also, with 학습 시 주의할 점은 무엇인가요?
apply 내부에서 this 가 다른 클래스의 수신자와 충돌할 수 있습니다. 중첩 스코프 함수에서는 this@ClassName 으로 명시하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.