Menu
Coddy logo textTech

Улучшенный цикл for

Часть раздела Fundamentals путешествия по Rust на Coddy — урок 66 из 75.

Существует несколько способов перебора массива, вот некоторые из них:

Рассмотрим следующий массив:

let numbers = [1, 2, 3, 4, 5];
  • Прямой итератор:

    for num in numbers.iter() {}
    // Значения: 1, 2, 3, 4, 5
  • Индекс и значение:

    for (index, value) in numbers.iter().enumerate() { }
    // Значения: (0,1), (1,2), (2,3), (3,4), (4,5)
  • Срезы определенного размера:

    for chunk in numbers.chunks(2) { }
    // Значения: [1,2], [3,4], [5]
  • Итерация с изменением:

    for num in numbers.iter_mut() { 
    	*num *= 2;
    }
    // Массив становится: [2, 4, 6, 8, 10]
challenge icon

Задание

Легко

Создайте программу, которая обрабатывает список покупок с товарами и их ценами и предоставляет различные представления данных.

Программа должна:

  1. Вывести номер каждого товара и его цену (используя enumerate)
  2. Вывести цены парами (используя chunks) как "bundle deals"
  3. Применить скидку 10% ко всем ценам (используя iter_mut)
  4. Вывести итоговые цены со скидкой

Шпаргалка

Различные способы итерации по массивам в Rust:

Прямой итератор:

for num in numbers.iter() {}
// Значения: 1, 2, 3, 4, 5

Индекс и значение с использованием enumerate:

for (index, value) in numbers.iter().enumerate() { }
// Значения: (0,1), (1,2), (2,3), (3,4), (4,5)

Срезы определенного размера с использованием chunks:

for chunk in numbers.chunks(2) { }
// Значения: [1,2], [3,4], [5]

Итерация с изменением с использованием iter_mut:

for num in numbers.iter_mut() { 
    *num *= 2;
}
// Массив становится: [2, 4, 6, 8, 10]

Попробуйте сами

fn main() {
    let mut prices = [2.75, 1.50, 5.00, 3.5, 4.1, 2.25, 7.9];

    println!("Original Prices:");
    // TODO: Используйте enumerate, чтобы вывести номер каждого товара и его цену
    // Ожидается: "Item 1: $2.99" и т.д.


    println!("\nBundle Deals:");
    // TODO: Используйте chunks, чтобы вывести пары цен и их суммы
    // Ожидается: "Bundle 1: $2.99 + $1.50 = $4.49" и т.д.


    // TODO: Используйте iter_mut, чтобы применить скидку 10% ко всем ценам


    println!("\nPrices after 10% discount:");
    // TODO: Выведите итоговые цены после скидки
    // Ожидается: "$2.69" и т.д.

}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Fundamentals