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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- วนซ้ำด้วย for บนช่วงและคอลเลกชัน
- while และ do-while: ควรใช้แบบใด
- forEach, repeat และ forEachIndexed
- break, continue และการคืนค่าด้วยป้ายกำกับ