0Pricing
Learn Rust Coding · บทเรียน

if let และ while let

การจับคู่แบบกระชับ

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

การจับคู่แบบกระชับ

บางครั้งคุณสนใจเพียงรูปแบบเดียว if let และ while let ช่วยให้จับคู่ได้อย่างกระชับโดยไม่ต้องใช้ match แบบเต็มรูปแบบ

รูปแบบ if let

if let จะเรียกใช้บล็อกเฉพาะเมื่อค่าตรงกับรูปแบบ และจะผูกข้อมูลที่จับได้ไว้ด้วย

fn main() {
    let maybe = Some(10);
    if let Some(n) = maybe {
        println!("value is {n}");
    }
}

if let เทียบกับ match

if let เป็นรูปแบบย่อของ match ที่มีแขนงสำคัญเพียงหนึ่งแขนง และมีทางผ่าน _ => () ใช้เมื่อกรณีอื่น ๆ ไม่จำเป็นต้องจัดการ

fn main() {
    let config: Option<i32> = None;
    // match equivalent would have an empty _ arm
    if let Some(v) = config {
        println!("configured: {v}");
    }
    println!("done");
}

การเพิ่ม else

ต่อท้ายด้วย else เพื่อจัดการกรณีที่จับคู่ไม่สำเร็จ

fn main() {
    let result: Result<i32, String> = Err("boom".to_string());
    if let Ok(v) = result {
        println!("ok: {v}");
    } else {
        println!("failed");
    }
}

let else

let ... else จะผูกค่าเมื่อรูปแบบตรงกัน มิฉะนั้นจะเรียกใช้บล็อกที่ไม่ดำเนินต่อ เช่น return เหมาะสำหรับการออกจากฟังก์ชันตั้งแต่ต้น

fn parse(s: &str) -> i32 {
    let Ok(n) = s.parse::<i32>() else {
        println!("not a number");
        return 0;
    };
    n * 2
}

fn main() {
    println!("{}", parse("21"));
    println!("{}", parse("oops"));
}

รูปแบบ while let

while let จะวนซ้ำตราบใดที่ค่าตรงกับรูปแบบ เหมาะอย่างยิ่งสำหรับดึงค่าออกจากสิ่งต่าง ๆ เช่น สแตก

fn main() {
    let mut stack = vec![1, 2, 3];
    while let Some(top) = stack.pop() {
        println!("popped {top}");
    }
}

การวนซ้ำผ่านตัววนซ้ำ

while let สามารถวนซ้ำโดยเรียก next ซ้ำ ๆ และหยุดเมื่อได้ค่า None

fn main() {
    let mut iter = [10, 20, 30].into_iter();
    while let Some(x) = iter.next() {
        println!("{x}");
    }
}

เงื่อนไขกำกับด้วย if let

เพิ่มเงื่อนไขกำกับได้โดยใส่เงื่อนไข && (Rust 2024) หรือซ้อน if ไว้ภายใน

fn main() {
    let value = Some(8);
    if let Some(n) = value {
        if n > 5 {
            println!("big: {n}");
        }
    }
}

ควรใช้รูปแบบใดเมื่อใด

แนวทางการเลือกใช้:

  • if let — จัดการรูปแบบเดียวและละเว้นส่วนที่เหลือ
  • let else — ผูกค่าหรือออกจากการทำงานตั้งแต่ต้น
  • while let — วนซ้ำตราบใดที่รูปแบบยังจับคู่ได้
  • match — ใช้เมื่อต้องจัดการหลายกรณี

ข้อแลกเปลี่ยนด้านความอ่านง่าย

รูปแบบเหล่านี้ช่วยลดโค้ดพื้นฐานซ้ำ ๆ แต่ก็อาจซ่อนบางกรณีไว้ หากพบว่าต้องจัดการหลายรูปแบบ ให้กลับไปใช้ match แบบเต็มเพื่อความชัดเจน

การซ้อน if let

คุณสามารถเชื่อมค่าที่อาจไม่มีได้ด้วยการซ้อน if let เพื่อแกะค่าทีละชั้น

fn main() {
    let outer: Option<Option<i32>> = Some(Some(99));
    if let Some(inner) = outer {
        if let Some(value) = inner {
            println!("value is {value}");
        }
    }
}

ตรวจสอบอย่างรวดเร็ว

โครงสร้างใดใช้เรียกใช้เนื้อหาของลูปซ้ำ ๆ ตราบใดที่ค่ายังตรงกับรูปแบบ

สรุปทบทวน

คุณได้เรียนรู้การจับคู่แบบกระชับ:

  • if let จัดการรูปแบบเดียว และอาจใช้ร่วมกับ else
  • let else ผูกค่าหรือออกจากการทำงานตั้งแต่ต้น
  • while let วนซ้ำตราบใดที่รูปแบบจับคู่ได้
  • เปลี่ยนไปใช้ match เมื่อต้องจัดการหลายกรณี

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

บทเรียน “if let และ while let” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “if let และ while let”

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

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

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

บทเรียน “if let และ while let” ใช้เวลานานแค่ไหน

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

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

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

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

  1. เจาะลึก match
  2. if let และ while let
  3. การผูกค่าด้วย @
  4. การแยกโครงสร้าง
← กลับไปที่ Learn Rust Coding