Menu
Coddy logo textTech

Работа с диапазонами

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

В этом уроке мы подробнее изучим, как работает range.

Базовый синтаксис диапазонов:

  • start..end - Создает диапазон от start до end (не включая конечный элемент)
  • start..=end - Создает диапазон от start до end (включая конечный элемент)
  • ..end - Создает диапазон от 0 до end (не включая)
  • ..=end - Создает диапазон от 0 до end (включая)
  • start.. — Создает диапазон от start до бесконечности
  • .. — Создает диапазон от минус бесконечности до плюс бесконечности

Обратный диапазон с использованием .rev():

  • (0..5).rev() - 4, 3, 2, 1, 0
  • (0..=5).rev() - 5, 4, 3, 2, 1, 0

Шаги с использованием .step_by(n):

  • (0..10).step_by(2) - 0, 2, 4, 6, 8
  • (0..10).rev().step_by(2) - 9, 7, 5, 3, 1

Например:

// Базовый прямой диапазон
for i in 0..5 { }
// Значения: 0, 1, 2, 3, 4
// Включающий диапазон
for i in 0..=5 { }
// Значения: 0, 1, 2, 3, 4, 5
// Обратный диапазон
for i in (0..5).rev() { }
// Значения: 4, 3, 2, 1, 0
// Шаг 2
for i in (0..10).step_by(2) { }
// Значения: 0, 2, 4, 6, 8
// Сочетание реверса и шага
for i in (0..10).rev().step_by(3) { }
// Значения: 9, 6, 3, 0
challenge icon

Задание

Легко

Создайте программу, которая начинается с двух массивов чисел и выводит для первого массива все числа в обратном порядке с шагом 3 по позициям массива, а для второго выводит все числа, кратные 4, в обратном порядке.  Выведите в следующем формате:

Array 1: [1], [2], [3], ...
Array 2: [1], [2], [3], ...

Шпаргалка

Синтаксис диапазонов в Rust:

  • start..end - Создает диапазон от start до end (не включая end)
  • start..=end - Создает диапазон от start до end (включая end)
  • ..end - Создает диапазон от 0 до end (не включая end)
  • ..=end - Создает диапазон от 0 до end (включая end)
  • start.. - Создает диапазон от start до бесконечности
  • .. - Создает диапазон от минус бесконечности до плюс бесконечности

Обратные диапазоны с использованием .rev():

  • (0..5).rev() - 4, 3, 2, 1, 0
  • (0..=5).rev() - 5, 4, 3, 2, 1, 0

Шаг итерации с использованием .step_by(n):

  • (0..10).step_by(2) - 0, 2, 4, 6, 8
  • (0..10).rev().step_by(2) - 9, 7, 5, 3, 1
// Базовый прямой диапазон
for i in 0..5 { }
// Значения: 0, 1, 2, 3, 4

// Инклюзивный диапазон
for i in 0..=5 { }
// Значения: 0, 1, 2, 3, 4, 5

// Обратный диапазон
for i in (0..5).rev() { }
// Значения: 4, 3, 2, 1, 0

// Шаг 2
for i in (0..10).step_by(2) { }
// Значения: 0, 2, 4, 6, 8

// Сочетание обратного порядка и шага
for i in (0..10).rev().step_by(3) { }
// Значения: 9, 6, 3, 0

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

fn main() {
    let numbers1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26];
    let numbers2 = [17, 53, 24, 77, 84, 98, 24, 36, 89, 31, 36];
    print!("Array 1: ");
    // Напишите свой код здесь
    
    println!();
    print!("Array 2: ");
    // Напишите свой код здесь
}
quiz iconПроверьте себя

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

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