Rust 從基礎到實踐(7) 流程控制

rust_logo.jpg
現實世界裡我們處理事情的邏輯都可以通過流程控制來描述, if number < 5
沒有像 javascript 中 if(number < 5)
這樣也是現代語言的特點。
fn main() { let number = 3; if number < 5 { println!("condition was true"); } else { println!("condition was false"); } }
在其他語言中,如果型別有值,則為預設為 true,而在 rust 中則必須是 bool
型。
fn main() { let number = 3; if number { println!("number was three"); } }
--> src/main.rs:21:8 | 21 |if number { |^^^^^^ expected bool, found integer | = note: expected type `bool` found type `{integer}`
fn main() { let number = 6; if number % 4 == 0 { println!("number is divisible by 4"); } else if number % 3 == 0 { println!("number is divisible by 3"); } else if number % 2 == 0 { println!("number is divisible by 2"); } else { println!("number is not divisible by 4, 3, or 2"); } }
在 rust 語言中,條件語句是有返回值的,這裡根據條件會返回為 5,但是需要條件語句返回值的型別都是一致的,如果這個將 “hello” 替換掉 6,就會報錯。
fn main() { let condition = true; let number = if condition { 5 } else { 6 }; println!("The value of number is: {}", number); }

zz999_9999_comp_ars000_3090_v283_rec709_v002_main_1003.jpeg
loop 是迴圈語句,可以使用 break counter * 2
終止迴圈後並返回值。
fn main() { let mut counter = 0; let result = loop { counter += 1; if counter == 10 { break counter * 2; } }; assert_eq!(result, 20); }
通過迴圈來遍歷 a 集合,
fn main() { let a = [10, 20, 30, 40, 50]; let mut index = 0; while index < 5 { println!("the value is: {}", a[index]); index = index + 1; } }
但是需要注意一下陣列越界,如果 index 超出陣列長度就會報錯,所以嘗試下面。
fn main() { let a = [10, 20, 30, 40, 50]; for element in a.iter() { println!("the value is: {}", element); } }

th.jpg