0Pricing
Kotlin Academy · บทเรียน

let และ run: แปลงค่าและกำหนดขอบเขต

ใช้ let สำหรับการแปลงค่าอย่างปลอดภัยกับ null และใช้ run สำหรับการคำนวณเฉพาะที่

let และ run: แปลงค่าและกำหนดขอบเขต เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน 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
}

let กับค่าที่อาจเป็น null

รูปแบบที่ใช้กันทั่วไปคือ 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 ทำงานคล้ายกับ let แต่ใช้ this แทน it มีประโยชน์เมื่อคุณต้องการเรียกใช้สมาชิกหลายรายการของตัวรับ

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 มากเกินไป

อย่าครอบการตรวจสอบค่า null แบบง่ายด้วย let หากใช้ if แล้วอ่านเข้าใจได้ชัดเจนกว่า ควรใช้ฟังก์ชันกำหนดขอบเขตเมื่อฟังก์ชันเหล่านั้นช่วยให้งานดีขึ้นจริง

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 และส่งคืนผลลัพธ์ของแลมบ์ดา

ทบทวน

let ใช้ it และส่งคืนผลลัพธ์ของแลมบ์ดา เหมาะอย่างยิ่งสำหรับการแปลงค่าอย่างปลอดภัยต่อ null และการจำกัดขอบเขต ส่วน run ใช้ this และส่งคืนผลลัพธ์ของแลมบ์ดา เหมาะเมื่อคุณเรียกใช้สมาชิกหลายรายการของตัวรับ ทั้งสองฟังก์ชันเหมาะกับโค้ดรูปแบบนิพจน์

คำถามที่พบบ่อย

บทเรียน “let และ run: แปลงค่าและกำหนดขอบเขต” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “let และ run: แปลงค่าและกำหนดขอบเขต” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “let และ run: แปลงค่าและกำหนดขอบเขต”

ใช้ let สำหรับการแปลงค่าอย่างปลอดภัยกับ null และใช้ run สำหรับการคำนวณเฉพาะที่ คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “let และ run: แปลงค่าและกำหนดขอบเขต” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม

ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. apply และ with: ตั้งค่าและส่งคืนค่า
  2. let และ run: แปลงค่าและกำหนดขอบเขต
  3. also: ผลข้างเคียงโดยไม่เปลี่ยนตัวรับ
  4. เลือกฟังก์ชันขอบเขตให้เหมาะสม: คู่มือการตัดสินใจ
← กลับไปที่ Kotlin Academy