break, continue และลูปที่มีป้ายกำกับ
ควบคุมลูปอย่างแม่นยำด้วยป้ายกำกับ
break, continue และลูปที่มีป้ายกำกับ เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คำสั่งควบคุมลูปสองแบบ
ภายในลูปใด ๆ break จะออกจากลูปทั้งหมด ส่วน continue จะกระโดดไปยังรอบถัดไป ทั้งสองคำสั่งช่วยให้คุณควบคุมลำดับการทำงานได้อย่างละเอียด 🎛️
break ออกทันที
เมื่อ break ทำงาน ลูปจะหยุดทันที และการทำงานจะดำเนินต่อที่บรรทัดหลังลูปโดยตรง ส่วนที่เหลือในบอดีจะไม่ทำงาน
for (items) |x| {
if (x == 0) break;
use(x);
}continue ข้ามไปข้างหน้า
continue จะยกเลิกส่วนที่เหลือของรอบปัจจุบันและไปยังรอบถัดไป โดยลูปเองยังคงทำงานต่อ
for (items) |x| {
if (x < 0) continue;
total += x;
}คำสั่งเหล่านี้มีผลกับลูปชั้นในสุด
โดยค่าเริ่มต้น break และ continue จะมีผลเฉพาะกับลูปชั้นในสุดที่ครอบคำสั่งเหล่านั้นอยู่ ลูปชั้นนอกจะทำงานต่อราวกับไม่มีอะไรเกิดขึ้น
ตั้งชื่อให้ลูป
คุณสามารถติดป้ายชื่อให้ลูปด้วยชื่อและโคลอนได้ ป้ายชื่อนี้ช่วยให้คุณระบุลูปเป้าหมายจากส่วนที่อยู่ลึกเข้าไปได้
outer: for (rows) |row| {
for (row) |cell| {
check(cell);
}
}ใช้ break ไปยังป้ายชื่อ
เขียน break :outer เพื่อออกจากลูปชั้นนอกที่มีชื่อโดยตรงจากภายในลูปซ้อน คำสั่งเดียวจะคลายการทำงานออกทั้งสองระดับ
outer: for (rows) |row| {
for (row) |cell| {
if (cell == target) break :outer;
}
}ใช้ continue ไปยังป้ายชื่อ
ใช้ continue :outer เพื่อข้ามไปยังรอบถัดไปของลูปชั้นนอกที่มีป้ายชื่อ โดยละทิ้งส่วนที่เหลือของลูปชั้นในทันที
ป้ายชื่อแทนแฟล็ก
ก่อนมีป้ายชื่อ คุณอาจตั้งแฟล็ก found แล้วตรวจสอบหลังแต่ละลูป การใช้ break พร้อมป้ายชื่อช่วยตัดโค้ดซ้ำซ้อนนั้นออกและอ่านได้ชัดเจนกว่า
break พร้อมป้ายชื่อคืนค่าได้
ลูปที่มีป้ายชื่อสามารถเป็นนิพจน์ได้เช่นกัน break :outer value จะส่งค่านั้นกลับมาเป็นผลลัพธ์ของลูปที่มีป้ายชื่อทั้งหมด
const hit = outer: for (rows) |row| {
for (row) |c| {
if (c == target) break :outer c;
}
} else 0;บล็อกก็ใช้ป้ายชื่อได้
ป้ายชื่อไม่ได้มีไว้สำหรับลูปเท่านั้น บล็อกทั่วไปก็สามารถมีป้ายชื่อได้ และ break พร้อมค่าจะเปลี่ยนบล็อกนั้นให้เป็นนิพจน์
const x = blk: {
const t = compute();
break :blk t * 2;
};ทำให้การซ้อนอยู่ในระดับตื้น
การควบคุมด้วยป้ายกำกับมีประสิทธิภาพ แต่ลูปที่ซ้อนกันลึกทำให้อ่านได้ยาก ควรใช้ป้ายกำกับเมื่อช่วยให้โค้ดชัดเจน ไม่ใช่เพื่อกลบเกลื่อนโค้ดที่พันกัน
ตรวจสอบอย่างรวดเร็ว
จากลูปด้านใน คุณต้องการออกจากลูปด้านนอกที่ชื่อ outer ควรใช้คำสั่งใด
ทบทวน
คุณเข้าใจ break และ continue แล้ว ทั้งการทำงานกับลูปชั้นในสุดโดยปริยาย ลูปที่มีป้ายกำกับสำหรับการซ้อน คำสั่ง break ที่คืนค่า และบล็อกที่มีป้ายกำกับ 🎯
คำถามที่พบบ่อย
บทเรียน “break, continue และลูปที่มีป้ายกำกับ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “break, continue และลูปที่มีป้ายกำกับ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “break, continue และลูปที่มีป้ายกำกับ”
ควบคุมลูปอย่างแม่นยำด้วยป้ายกำกับ คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “break, continue และลูปที่มีป้ายกำกับ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม
ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- if ในฐานะคำสั่งและนิพจน์
- ลูป while และนิพจน์ continue
- ลูป for เหนือช่วงและรายการ
- break, continue และลูปที่มีป้ายกำกับ