0Pricing
Kotlin Academy · 강의

let과 run: 변환과 스코프

null 안전 변환에는 let을, 로컬 계산에는 run을 적용해 보세요.

let과 run: 변환과 스코프은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

let과 run

let은 it을 수신 객체로 사용하고, run은 this를 사용합니다. 둘 다 람다의 마지막 표현식을 반환합니다. 참조를 명시적으로 작성하는 것을 선호하는지에 따라 선택하십시오.

let 기초

let은 수신 객체를 it으로 람다에 전달합니다. 값을 변환하거나 변수의 범위를 제한할 때 유용합니다.

fun main() {
    val length = "Kotlin".let { it.length }
    println(length) // 6
}

null 허용 값과 let

대표적인 관용구인 obj?.let { ... }은 obj가 null이 아닐 때만 블록을 실행합니다.

fun main() {
    val name: String? = "Ada"
    val upper = name?.let { it.uppercase() } ?: "(unknown)"
    println(upper) // ADA
}

let으로 변환하기

연결 흐름을 읽기 쉽게 유지하면서 값을 변환하려면 let을 사용하십시오.

fun main() {
    val numStr = "42"
    val doubled = numStr.let { it.toInt() }.let { it * 2 }
    println(doubled) // 84
}

let으로 범위 제한하기

변수의 가시성을 작은 블록으로 제한하면 이름 공간 오염을 피할 수 있어 코드가 깔끔해집니다.

fun main() {
    val username = readUserConfig().let { config ->
        config.uppercase()
    }
    println(username)
}
fun readUserConfig() = "ada"

run 기초

run은 it 대신 this를 사용한다는 점을 제외하면 let과 비슷합니다. 수신 객체의 여러 멤버를 호출하려 할 때 유용합니다.

class Rect(val w: Int, val h: Int) {
    fun area() = w * h
    fun perimeter() = 2 * (w + h)
}
fun main() {
    val description = Rect(3, 4).run {
        "area=${area()}, perimeter=${perimeter()}"
    }
    println(description)
}

독립 블록으로 사용하는 run

수신 객체 없이 사용하는 run { ... }은 블록을 실행하고 그 결과를 반환하므로 계산을 묶을 때 유용합니다.

fun main() {
    val result = run {
        val a = 10
        val b = 20
        a + b
    }
    println(result) // 30
}

수신 객체 참조 방식에 따른 let과 run

람다 본문에서 수신 객체의 여러 멤버에 접근한다면 run을 사용하면 it.을 생략할 수 있습니다. 수신 객체를 한두 번만 사용한다면 let이 더 읽기 쉽습니다.

class User(val name: String, val email: String, val age: Int)
fun main() {
    val user = User("Ada", "ada@x.io", 35)
    // run: this-style
    val s1 = user.run { "$name <$email> age $age" }
    // let: it-style
    val s2 = user.let { "${it.name} <${it.email}> age ${it.age}" }
    println(s1); println(s2)
}

let과 Elvis 결합하기

?.let { ... }과 ?:를 결합하면 강력한 null 안전 처리 흐름 패턴을 만들 수 있습니다.

fun main() {
    val raw: String? = "  hello  "
    val cleaned = raw?.let { it.trim().uppercase() } ?: "(empty)"
    println(cleaned) // HELLO
}

구성과 결과를 함께 사용하는 run

하나의 블록에서 this를 통한 설정과 반환 값을 함께 처리할 수 있습니다.

class Connection {
    var host: String = ""
    fun connect() = "connected to $host"
}
fun main() {
    val status = Connection().run {
        host = "localhost"
        connect()
    }
    println(status)
}

안티 패턴: let 과다 사용

if가 더 명확한데도 간단한 null 검사를 let으로 감싸지 마십시오. 범위 함수를 실제로 도움이 될 때 사용하십시오.

fun main() {
    val name: String? = "Ada"
    // OK
    name?.let { println(it.length) }
    // Equivalent and clearer for trivial cases:
    if (name != null) println(name.length)
}

빠른 확인

어떤 범위 함수가 수신 객체를 it으로 람다에 전달하고 AND 람다 결과를 반환합니까?

복습

let은 it을 사용하고 람다 결과를 반환하므로 null 안전 변환과 범위 제한에 적합합니다. run은 this를 사용하고 람다 결과를 반환하므로 수신 객체의 여러 멤버를 호출할 때 적합합니다. 둘 다 표현식 방식의 코드를 작성하는 데 효과적입니다.

자주 묻는 질문

“let과 run: 변환과 스코프” 강의는 무료인가요?

네 — “let과 run: 변환과 스코프” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“let과 run: 변환과 스코프”에서 뭘 배우나요?

null 안전 변환에는 let을, 로컬 계산에는 run을 적용해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“let과 run: 변환과 스코프” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. apply와 with: 구성하고 반환하기
  2. let과 run: 변환과 스코프
  3. also: 수신 객체를 변경하지 않는 부수 효과
  4. 알맞은 스코프 함수 선택하기: 결정 가이드
← Kotlin Academy(으)로 돌아가기