Kotlin Academy · บทเรียน

การใช้ when เป็นนิพจน์

ส่งคืนค่าจาก when

บทเรียน 1 จาก 413 ขั้นตอน

การใช้ when เป็นนิพจน์ เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน

when ในฐานะนิพจน์

when ของ Kotlin เป็นมากกว่าคำสั่งสวิตช์ เพราะเป็นนิพจน์ ซึ่งหมายความว่าสามารถสร้างค่าเพื่อนำไปกำหนดให้ตัวแปรหรือคืนค่าได้

จึงทำให้ตรรกะการแยกแขนงกระชับและอ่านง่าย

การคืนค่า

เมื่อใช้เป็นนิพจน์ แต่ละแขนงจะระบุผลลัพธ์ ค่าของแขนงที่ตรงเงื่อนไขจะกลายเป็นผลลัพธ์ทั้งหมดของ when

fun main() {
    val day = 3
    val name = when (day) {
        1 -> "Monday"
        2 -> "Tuesday"
        3 -> "Wednesday"
        else -> "Other"
    }
    println(name)
}

ต้องมี else

เมื่อใช้เป็นนิพจน์ when ต้องครอบคลุมทุกกรณี สำหรับค่าทั่วไป นั่นหมายความว่าต้องมีแขนง else

หากไม่มีแขนงนี้ คอมไพเลอร์จะรับประกันไม่ได้ว่าจะมีการสร้างค่า

fun grade(score: Int): String = when {
    score >= 90 -> "A"
    score >= 80 -> "B"
    else -> "C"
}

fun main() {
    println(grade(85))
}

หลายค่าในแต่ละแขนง

คั่นค่าหลายค่าด้วยจุลภาคเพื่อให้ใช้แขนงเดียวกัน

วิธีนี้สะอาดกว่าการเขียนส่วนเนื้อหาเดิมซ้ำ

fun main() {
    val day = 6
    val type = when (day) {
        1, 2, 3, 4, 5 -> "Weekday"
        6, 7 -> "Weekend"
        else -> "Invalid"
    }
    println(type)
}

when โดยไม่มีอาร์กิวเมนต์

ละหัวข้อเงื่อนไขออก แล้วแต่ละแขนงจะกลายเป็นเงื่อนไขบูลีน

วิธีนี้ใช้แทนสายคำสั่ง if/else if ได้ด้วยบล็อกที่เป็นระเบียบ

fun main() {
    val temp = 18
    val feel = when {
        temp < 0 -> "Freezing"
        temp < 15 -> "Cold"
        temp < 25 -> "Mild"
        else -> "Hot"
    }
    println(feel)
}

ช่วงค่าในแขนง

แขนงสามารถตรวจสอบช่วงค่าด้วย in

จึงใช้แสดงกลุ่มช่วงตัวเลขได้อย่างเป็นธรรมชาติ

fun main() {
    val score = 73
    val band = when (score) {
        in 0..59 -> "Fail"
        in 60..79 -> "Pass"
        in 80..100 -> "Excellent"
        else -> "Invalid"
    }
    println(band)
}

การตรวจสอบชนิดข้อมูลในแขนง

แขนงสามารถตรวจสอบชนิดข้อมูลด้วย is

ผลลัพธ์ของแต่ละแขนงอาจแตกต่างกัน และ when จะคืนชนิดข้อมูลร่วม

fun describe(x: Any): String = when (x) {
    is Int -> "Integer"
    is String -> "Text"
    else -> "Unknown"
}

fun main() {
    println(describe(42))
    println(describe("hi"))
}

บล็อกของแขนง

แขนงสามารถเป็นบล็อกที่มีคำสั่งหลายรายการได้ นิพจน์สุดท้ายในบล็อกจะเป็นค่าของบล็อกนั้น

fun main() {
    val n = 5
    val result = when {
        n > 0 -> {
            val doubled = n * 2
            "Positive, doubled is " + doubled
        }
        else -> "Non-positive"
    }
    println(result)
}

การคืนค่า when โดยตรง

ฟังก์ชันสามารถคืนค่านิพจน์ when ได้โดยตรงด้วยเนื้อหาฟังก์ชันแบบนิพจน์เดียว

นี่เป็นรูปแบบ Kotlin ที่พบบ่อยและสะอาดมาก

fun sign(n: Int): String = when {
    n > 0 -> "positive"
    n < 0 -> "negative"
    else -> "zero"
}

fun main() {
    println(sign(-4))
}

การเก็บหัวข้อเงื่อนไข

คุณสามารถประกาศหัวข้อเงื่อนไขภายใน when เพื่อให้ใช้งานได้ในแขนงต่าง ๆ

วิธีนี้ทำให้ขอบเขตการใช้งานของค่าชั่วคราวแคบลงอย่างเหมาะสม

fun describeLength(text: String): String = when (val len = text.length) {
    0 -> "empty"
    in 1..5 -> "short (" + len + ")"
    else -> "long (" + len + ")"
}

fun main() {
    println(describeLength("hello"))
}

นำทุกอย่างมาประกอบกัน

ในฐานะนิพจน์ when เป็นตัวสร้างค่าที่ทรงพลัง:

  • แต่ละแขนงจะระบุผลลัพธ์
  • else ทำให้ครอบคลุมทุกกรณี
  • รองรับจุลภาค ช่วงค่า ชนิดข้อมูล และบล็อก
fun ticketPrice(age: Int): Int = when {
    age < 6 -> 0
    age < 18 -> 10
    age >= 65 -> 8
    else -> 15
}

fun main() {
    println(ticketPrice(4))
    println(ticketPrice(70))
}

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจของคุณเกี่ยวกับการใช้ when เป็นนิพจน์

สรุปทบทวน

คุณได้เรียนรู้การใช้ when เป็นนิพจน์:

  • คืนค่าของแขนงที่ตรงเงื่อนไข
  • ต้องมี else เพื่อให้ครอบคลุมทุกกรณี
  • รองรับจุลภาค ช่วงค่า การตรวจสอบชนิดข้อมูล และบล็อก

ถัดไป คุณจะได้ดูว่าสมาร์ตแคสต์ช่วยให้คอมไพเลอร์จำกัดชนิดข้อมูลให้แคบลงได้อย่างไร

เริ่มต้นได้ฟรี

เรียนรู้ Kotlin ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
51
บทเรียน
203

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

บทเรียน “การใช้ when เป็นนิพจน์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การใช้ when เป็นนิพจน์”

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

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

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

บทเรียน “การใช้ when เป็นนิพจน์” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การใช้ when เป็นนิพจน์
  2. การแปลงชนิดข้อมูลอัจฉริยะ
  3. ตัวดำเนินการ is และ as
  4. when แบบครอบคลุมทุกกรณี
← กลับไปที่ Kotlin Academy