알맞은 스코프 함수 선택하기: 결정 가이드
수신 객체, 반환 타입 및 목적에 따라 올바른 스코프 함수를 선택해 보세요.
알맞은 스코프 함수 선택하기: 결정 가이드은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
다섯 함수와 두 축
Kotlin의 범위 함수는 두 가지 축에 따라 달라집니다. 하나는 수신 객체 참조 방식(this 또는 it)이고, 다른 하나는 반환 값(수신 객체 또는 람다 결과)입니다. 의도에 따라 선택하십시오.
선택 표
apply: this / 수신 객체. also: it / 수신 객체. run: this / 람다. let: it / 람다. with: this / 람다(점 연산자로 수신 객체를 지정하지 않음).
apply: 구성하고 반환하기
빌더 방식의 연결 흐름에서 객체를 구성하려면 apply를 사용하십시오.
class Config {
var host: String = ""
var port: Int = 0
}
fun main() {
val cfg = Config().apply {
host = "localhost"
port = 8080
}
println("${cfg.host}:${cfg.port}")
}also: 부수효과
수신 객체를 그대로 전달하면서 기록하거나 검증하거나 부수효과를 실행하려면 also를 사용하십시오.
fun main() {
val items = listOf(1, 2, 3, 4)
.also { println("got ${it.size} items") }
.filter { it % 2 == 0 }
println(items)
}let: it으로 변환하고 null 안전성 확보하기
null 안전 변환을 수행하거나 변수의 범위를 제한하려면 let을 사용하십시오.
fun main() {
val name: String? = "Ada"
val length = name?.let { it.length } ?: 0
println(length)
}run: 결과와 함께 여러 멤버에 접근하기
수신 객체의 여러 멤버를 사용해 결과를 계산할 때는 run을 사용하십시오. it. 접두사를 반복해서 작성하지 않아도 됩니다.
class User(val name: String, val age: Int)
fun main() {
val description = User("Ada", 35).run {
"Name: $name, Age: $age"
}
println(description)
}with: 기존 객체에 대한 작업 묶기
호출 위치를 직접 제어하지 않아 점 연결을 사용할 수 없지만 this를 사용해 작업을 묶고 싶다면 with(obj) { ... }을 사용하십시오.
class Builder {
val parts = mutableListOf<String>()
fun add(s: String) { parts.add(s) }
fun build(): String = parts.joinToString("-")
}
fun main() {
val b = Builder()
val result = with(b) {
add("hello")
add("kotlin")
build()
}
println(result) // hello-kotlin
}의도에 따른 선택
다음 두 가지를 생각해 보십시오. (1) 수신 객체 자체가 필요합니까, 아니면 파생된 결과가 필요합니까? (2) this와 it 중 어느 쪽을 선호합니까? 답에 따라 함수를 선택할 수 있습니다.
class Box { var w = 0; var h = 0; fun area() = w * h }
fun main() {
// Configure and return Box -> apply
val box = Box().apply { w = 3; h = 4 }
// Compute area from box -> let or run
val area = box.let { it.area() }
// Side effect, keep box -> also
val sameBox = box.also { println("area=${it.area()}") }
println("$box / $area / $sameBox")
}비교: apply와 also
둘 다 수신 객체를 반환합니다. apply는 this를 사용하므로 필드를 설정하는 데 적합합니다. also는 it을 사용하므로 수신 객체를 명시적으로 참조할 때, 특히 부수효과를 수행할 때 적합합니다.
class Item { var name = "" }
fun main() {
val a = Item().apply { name = "apply" } // implicit this
val b = Item().also { it.name = "also" } // explicit it
println("${a.name} / ${b.name}")
}비교: let과 run
둘 다 람다 결과를 반환합니다. let은 it을 사용하므로 간단한 변환과 null 안전성 확보에 적합합니다. run은 this를 사용하므로 여러 멤버를 호출할 때 적합합니다.
class Calculator(val a: Int, val b: Int) {
fun sum() = a + b
fun product() = a * b
}
fun main() {
val calc = Calculator(3, 4)
val s = calc.let { it.sum() } // simple
val combo = calc.run { "sum=${sum()} product=${product()}" } // multi-member
println("$s / $combo")
}실전 처리 흐름
실제 연결 흐름에서는 여러 범위 함수를 함께 사용하는 경우가 많습니다.
class Request(var url: String = "", var headers: Map<String, String> = emptyMap())
fun main() {
val response = Request()
.apply {
url = "https://api.example.com"
headers = mapOf("Accept" to "json")
}
.also { println("request: ${it.url}") }
.let { req -> "GET ${req.url}" }
println(response)
}요약표
알맞은 도구를 선택하기 위한 빠른 참고 자료입니다.
// apply: this, returns receiver — configure object
// also: it, returns receiver — side effects in chain
// let: it, returns lambda result — transform / null-safety
// run: this, returns lambda result — multi-member compute
// with: this, returns lambda result — group operations on existing obj
fun main() { println("Scope functions: pick by receiver style + return value") }빠른 확인
어떤 범위 함수가 this를 수신 객체로 사용하고 AND 수신 객체 자체를 반환합니까?
복습
의도에 따라 범위 함수를 선택하십시오. apply는 구성 후 자기 자신을 반환하고, also는 부수효과 후 자기 자신을 반환하며, let은 it으로 변환하고, run은 this로 변환하며, with는 기존 객체에 대한 작업을 묶습니다. 수신 객체 참조 방식과 반환 값이라는 두 축이 올바른 선택을 결정합니다.
자주 묻는 질문
“알맞은 스코프 함수 선택하기: 결정 가이드” 강의는 무료인가요?
네 — “알맞은 스코프 함수 선택하기: 결정 가이드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“알맞은 스코프 함수 선택하기: 결정 가이드”에서 뭘 배우나요?
수신 객체, 반환 타입 및 목적에 따라 올바른 스코프 함수를 선택해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“알맞은 스코프 함수 선택하기: 결정 가이드” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- apply와 with: 구성하고 반환하기
- let과 run: 변환과 스코프
- also: 수신 객체를 변경하지 않는 부수 효과
- 알맞은 스코프 함수 선택하기: 결정 가이드