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

break, continue และการคืนค่าด้วยป้ายกำกับ

ควบคุมการทำงานของลูปด้วย break/continue และออกจากลูปซ้อนกันด้วยป้ายกำกับ

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

การควบคุมลำดับการทำงานของลูป

Kotlin รองรับ break ซึ่งออกจากลูป continue ซึ่งข้ามไปยังรอบถัดไป และ ป้ายกำกับสำหรับออกจากลูปซ้อนกัน

พื้นฐานของ break

break ออกจากลูปชั้นในสุดที่ครอบอยู่ทันที

fun main() {
    for (i in 1..10) {
        if (i == 5) break
        print("$i ")
    }
    println() // 1 2 3 4
}

พื้นฐานของ continue

continue ข้ามส่วนที่เหลือของรอบปัจจุบันและไปยังรอบถัดไป

fun main() {
    for (i in 1..10) {
        if (i % 2 == 0) continue
        print("$i ")
    }
    println() // 1 3 5 7 9
}

ลูปที่มีป้ายกำกับ

กำหนดป้ายกำกับให้ลูปด้วย label@ และอ้างอิงป้ายกำกับนั้นจาก break@label หรือ continue@label เพื่อควบคุมลูปภายนอกจากภายในลูปที่ซ้อนอยู่

fun main() {
    outer@ for (i in 1..3) {
        for (j in 1..3) {
            if (i == 2 && j == 2) break@outer
            println("$i,$j")
        }
    }
}

continue พร้อมป้ายกำกับ

ใช้ continue@outer เพื่อข้ามไปยังรอบถัดไปของลูปภายนอก

fun main() {
    outer@ for (i in 1..3) {
        for (j in 1..3) {
            if (j == 2) continue@outer
            println("i=$i j=$j")
        }
    }
}

return@lambda

ภายใน forEach และฟังก์ชันอินไลน์อื่น ๆ การใช้ return ธรรมดาจะออกจากฟังก์ชันที่ครอบอยู่ ให้ใช้ return@forEach เพื่อออกจากแลมบ์ดาเท่านั้น

fun main() {
    listOf(1, 2, 3, 4, 5).forEach {
        if (it == 3) return@forEach
        println(it)
    }
    println("Done")
}

การ return แบบไม่ใช่เฉพาะที่ในแลมบ์ดา

หากแลมบ์ดาเป็นอินไลน์ เช่น forEach การใช้ return ธรรมดาจะออกจากฟังก์ชันที่ครอบอยู่ทั้งหมด ซึ่งบางครั้งอาจทำให้เกิดความประหลาดใจได้

fun process() {
    listOf(1, 2, 3).forEach {
        if (it == 2) return // exits process()
        println(it)
    }
    println("never printed")
}
fun main() { process() }

ป้ายกำกับแบบกำหนดเองบนแลมบ์ดา

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

fun main() {
    listOf(1, 2, 3, 4).forEach loop@{
        if (it == 3) return@loop
        println(it)
    }
}

break ใน while

break และ continue ทำงานเหมือนกันใน while และ do-while

fun main() {
    var i = 0
    while (true) {
        if (i >= 3) break
        println("i = $i")
        i++
    }
}

การผสานป้ายกำกับกับ continue

ป้ายกำกับและ continue ช่วยให้คุณข้ามทั้งรอบของขั้นตอนวิธีที่ซ้อนกันได้โดยไม่ต้องใช้ตัวแปรสถานะ

fun main() {
    val grid = listOf(listOf(1,2,0), listOf(3,4,5), listOf(0,6,7))
    rows@ for (row in grid) {
        for (cell in row) {
            if (cell == 0) continue@rows
            print("$cell ")
        }
        println()
    }
}

เมื่อใดไม่ควรใช้ป้ายกำกับ

ป้ายกำกับเพิ่มความซับซ้อน หากคุณพบว่าต้องใช้ป้ายกำกับอยู่บ่อย ๆ ให้พิจารณาแยกลูปภายในออกเป็นฟังก์ชันที่ใช้ return ปกติ

fun firstMatch(grid: List<List<Int>>, target: Int): Pair<Int,Int>? {
    for (r in grid.indices) for (c in grid[r].indices) {
        if (grid[r][c] == target) return r to c
    }
    return null
}
fun main() {
    val g = listOf(listOf(1,2),listOf(3,4))
    println(firstMatch(g, 3))
}

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

ใน Kotlin คุณจะออกจากลูปภายนอกจากภายในลูปภายในได้อย่างไร

สรุปทบทวน

break ออกจากลูปชั้นในสุด ส่วน continue จะข้ามไปยังรอบถัดไป ใช้ label@ ร่วมกับ break@label/continue@label เพื่อควบคุมลูปที่ซ้อนกัน ในแลมบ์ดา ควรเลือกใช้ return@forEach แทน return เพื่อหลีกเลี่ยงการออกจากฟังก์ชันที่ครอบอยู่โดยไม่ตั้งใจ

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

บทเรียน “break, continue และการคืนค่าด้วยป้ายกำกับ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “break, continue และการคืนค่าด้วยป้ายกำกับ”

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

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

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

บทเรียน “break, continue และการคืนค่าด้วยป้ายกำกับ” ใช้เวลานานแค่ไหน

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

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

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

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

  1. วนซ้ำด้วย for บนช่วงและคอลเลกชัน
  2. while และ do-while: ควรใช้แบบใด
  3. forEach, repeat และ forEachIndexed
  4. break, continue และการคืนค่าด้วยป้ายกำกับ
← กลับไปที่ Kotlin Academy