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จัดการรูปแบบเดียว และอาจใช้ร่วมกับelselet 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เจาะลึก match
- if let และ while let
- การผูกค่าด้วย @
- การแยกโครงสร้าง