Control Flow
if แบบ Expression
หัวข้อที่มีชื่อว่า “if แบบ Expression”ใน Rust if คือ expression — ประเมินออกมาเป็นค่า คุณจึงใช้ if ทางขวามือของ let binding ได้ ทุก branch ต้องผลิตค่าที่มี type เดียวกัน
fn main() { let score = 75; let grade = if score >= 90 { "A" } else if score >= 75 { "B" } else { "C" }; println!("grade = {}", grade);}ไม่จำเป็นต้องมี parentheses รอบ condition และต้องมี curly brace รอบ body เสมอ
if แบบ Statement ปกติ
หัวข้อที่มีชื่อว่า “if แบบ Statement ปกติ”เมื่อไม่ต้องการผลลัพธ์ ใช้ if แบบ statement:
fn main() { let n = 7; if n % 2 == 0 { println!("even"); } else { println!("odd"); }}loop — วนซ้ำไม่รู้จบ
หัวข้อที่มีชื่อว่า “loop — วนซ้ำไม่รู้จบ”loop รัน body ของตัวเองไม่หยุดจนกว่าจะพบ break อย่างชัดเจน ต่างจากภาษาอื่น loop ของ Rust สามารถ return ค่า ผ่าน break ได้
fn main() { let mut counter = 0; let result = loop { counter += 1; if counter == 5 { break counter * 2; // loop ประเมินเป็นค่านี้ } }; println!("result = {}", result); // 10}while — Loop ตามเงื่อนไข
หัวข้อที่มีชื่อว่า “while — Loop ตามเงื่อนไข”while วนซ้ำตราบเท่าที่ condition เป็น true ไม่สามารถ return ค่าผ่าน break ได้
fn main() { let mut n = 1; while n < 4 { print!("{} ", n); n += 1; } println!(); // newline}for — วนผ่าน Collection และ Range
หัวข้อที่มีชื่อว่า “for — วนผ่าน Collection และ Range”for คือ loop ที่ใช้บ่อยที่สุดใน Rust และวนผ่าน type ใดก็ได้ที่ implement Iterator trait รวมถึง range และ array
fn main() { // Exclusive range: 1, 2, 3 for i in 1..4 { print!("{} ", i); } println!();
// Inclusive range: 1, 2, 3, 4, 5 for i in 1..=5 { print!("{} ", i); } println!();
// วนผ่าน array let fruits = ["apple", "banana", "cherry"]; for fruit in fruits { print!("{} ", fruit); } println!();}ควรใช้ for แทน while ที่มี index manual เสมอเมื่อเป็นไปได้ เพราะปลอดภัยกว่าและแสดงเจตนาได้ชัดเจนกว่า
fn main() { // if as an expression let score = 75; let grade = if score >= 90 { "A" } else if score >= 75 { "B" } else { "C" }; println!("grade = {}", grade);
// loop returning a value via break let mut counter = 0; let result = loop { counter += 1; if counter == 5 { break counter * 2; } }; println!("loop result = {}", result);
// while loop let mut n = 1; while n < 4 { print!("{} ", n); n += 1; } println!();
// for with a range for i in 1..=3 { print!("{} ", i); } println!();
// for over an array let nums = [10, 20, 30]; for val in nums { print!("{} ", val); } println!();}Compiling…