Улучшенный цикл 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]
Задание
ЛегкоСоздайте программу, которая обрабатывает список покупок с товарами и их ценами и предоставляет различные представления данных.
Программа должна:
- Вывести номер каждого товара и его цену (используя enumerate)
- Вывести цены парами (используя chunks) как "bundle deals"
- Применить скидку 10% ко всем ценам (используя iter_mut)
- Вывести итоговые цены со скидкой
Шпаргалка
Различные способы итерации по массивам в 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" и т.д.
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияАрифметические сокращенияОператоры сравненияСравнение строк7Основы ввода-вывода
Вывод в консольЧтение ввода пользователяПовторение — До 120Повторение — True или False5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 38Приложение-калькулятор
Приветственное сообщениеПолучение чисел11Функции
Объявление функцийПараметры и аргументыВозвращаемые значенияМножественные возвращаемые значенияПовторение: функция SigmaПовторение: функция валидации14Итерация по массивам
Работа с диапазонамиУлучшенный цикл forЗаимствование в циклеОсновные операции с массивами3Переменные. Часть 2
Объявление типаСоглашения об именованииВывод типовПовторение: инициализация переменныхПриведение типов9Циклы
Цикл For по последовательностиЦикл WhileОператор BreakОператор ContinueВложенные циклыМетки цикловБесконечный циклПовторение — Динамический ввод