Bài học theo mô-đun (1/2)
Điều kiện và vòng lặp
Luồng điều khiển trong Rust xoay quanh hai cấu trúc chính: biểu thức điều kiện để quyết định đường dẫn thực thi nào sẽ thực hiện và cấu trúc vòng lặp để lặp lại hướng dẫn.
Điều kiện: if dưới dạng biểu thức
Trong Rust, câu lệnh if là một biểu thức, nghĩa là nó trả về một giá trị. Chúng ta có thể sử dụng if để gán trực tiếp giá trị cho một biến:
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expressionVòng lặp và lặp lại
Rust cung cấp ba loại vòng lặp gốc: loop, while và for.
1. loop (Vòng lặp vô hạn)
Từ khóa loop tạo ra một vòng lặp vô hạn tiếp tục cho đến khi bạn yêu cầu nó ngừng sử dụng break một cách rõ ràng:
let mut count = 0;
loop {
count += 1;
if count == 10 {
break; // Exit the loop
}
}Ngoài ra, bạn có thể trả về giá trị từ loop bằng cách đặt giá trị đó ngay sau break:
let result = loop {
count += 1;
if count == 10 {
break count * 2; // Returns 20
}
};2. while (Vòng lặp có điều kiện)
Chạy một khối mã miễn là điều kiện boolean vẫn đúng:
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}3. for (Lặp lại các Tập hợp và Phạm vi)
Vòng lặp for là công cụ phổ biến và an toàn nhất để lặp lại các phần tử trong một bộ sưu tập hoặc một dãy số:
// Iterates over numbers 1 through 3 (excluding 4)
for number in 1..4 {
println!("Valore: {}", number);
}
// Iterates including the right boundary using '='
for number in 1..=3 {
println!("Valore: {}", number); // Prints 1, 2 and 3
}Nhãn vòng lặp
Khi xử lý các vòng lặp lồng nhau, các câu lệnh break và continue sẽ áp dụng cho vòng lặp trong cùng theo mặc định. Rust cho phép bạn sử dụng nhãn vòng lặp (được viết là 'label_name:) để chấm dứt hoặc tiếp tục một vòng lặp bên ngoài một cách rõ ràng:
let mut count = 0;
'outer: loop {
loop {
if count == 5 {
break 'outer; // Exits the outer loop directly
}
count += 1;
}
}Hãy tự mình thử
Khai báo một biến có tên number với giá trị là 7. Tiếp theo, sử dụng biểu thức if/else để gán giá trị 'lớn hơn' cho thông báo biến nếu số lớn hơn 5 hoặc 'nhỏ hơn' nếu không. Cuối cùng, in tin nhắn bằng println!.
Hiển thị gợi ý
Viết `let message = if number > 5 { 'Greater' } else { 'smaller' };` và chuyển nó tới `println!`.
Giải pháp khả dụng sau 3 lần thử
Viết vòng lặp for in các số từ 1 đến 5 (tức là 1, 2, 3, 4, 5) bằng println! ở mỗi lần lặp.
Hiển thị gợi ý
Sử dụng cú pháp phạm vi bao gồm `for i in 1..=5` và chạy `println!('{}', i);` bên trong khối.
Giải pháp khả dụng sau 3 lần thử
Viết một vòng lặp tăng số bộ đếm biến có thể thay đổi bắt đầu từ 0. Khi bộ đếm đạt đến 10, thoát khỏi vòng lặp trả về bộ đếm nhân với 5 bằng cách sử dụng câu lệnh break để gán giá trị này cho kết quả biến không thể thay đổi. Cuối cùng, in kết quả.
Hiển thị gợi ý
Sử dụng `let result = loop { ... };`. Bên trong vòng lặp tăng `counter` và thêm điều kiện `if counter == 10 { break counter * 5; }`.
Giải pháp khả dụng sau 3 lần thử