Модульні уроки (1/2)
Умови та цикли
Потік керування в Rust обертається навколо двох основних конструкцій: умовних виразів для визначення шляху виконання та конструкцій циклу для повторення інструкцій.
Умовні слова: if як вираз
У Rust оператор if є виразом, тобто повертає значення. Ми можемо використовувати if, щоб безпосередньо призначити значення змінній:
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expressionЦикли та ітерації
Rust надає три типи власних циклів: loop, while та for.
1. loop (нескінченний цикл)
Ключове слово loop створює нескінченний цикл, який триває, доки ви явно не скажете йому припинити використання break:
let mut count = 0;
loop {
count += 1;
if count == 10 {
break; // Exit the loop
}
}Крім того, ви можете повернути значення з loop, розмістивши його одразу після break:
let result = loop {
count += 1;
if count == 10 {
break count * 2; // Returns 20
}
};2. while (умовний цикл)
Виконує блок коду, поки виконується логічна умова:
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}3. for (Ітерація по колекціях і діапазонах)
Цикл for є найпоширенішим і найбезпечнішим інструментом для повторення елементів у колекції чи діапазоні чисел:
// 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
}Циклічні мітки
Під час роботи з вкладеними циклами оператори break та continue за замовчуванням застосовуються до самого внутрішнього циклу. Rust дозволяє використовувати мітку циклу (написану як 'label_name:), щоб явно припинити або продовжити зовнішній цикл:
let mut count = 0;
'outer: loop {
loop {
if count == 5 {
break 'outer; // Exits the outer loop directly
}
count += 1;
}
}Спробуйте самі
Оголошіть змінну з іменем number зі значенням 7. Далі скористайтеся виразом if/else, щоб призначити значення «greater» змінній message, якщо number більше 5, або «smaller» в іншому випадку. Нарешті, надрукуйте повідомлення за допомогою println!.
Показати підказку
Напишіть `let message = if number > 5 { 'greater' } else { 'smaller' };` і передайте його в `println!`.
Рішення доступне після 3 спроб
Напишіть цикл for, який друкує числа від 1 до 5 включно (тобто 1, 2, 3, 4, 5) за допомогою println! на кожній ітерації.
Показати підказку
Використовуйте синтаксис інклюзивного діапазону `for i in 1..=5` і виконайте `println!('{}', i);` всередині блоку.
Рішення доступне після 3 спроб
Напишіть цикл, який збільшує лічильник змінної змінної, починаючи з 0. Коли лічильник досягає 10, вийдіть із циклу, повертаючи лічильник, помножений на 5, використовуючи оператор break, щоб призначити це значення результату незмінної змінної. Нарешті, роздрукуйте результат.
Показати підказку
Використовуйте `let result = loop { ... };`. Усередині циклу збільште `лічильник` і додайте умову `if counter == 10 { break counter * 5; }`.
Рішення доступне після 3 спроб