Кортежные структуры
Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 25 из 66.
В то время как обычные структуры используют именованные поля, Rust предлагает другой тип, называемый кортежными структурами. Они предоставляют более лаконичный способ создания пользовательских типов, когда вам не нужно именовать каждое поле по отдельности.
Кортежная структура сочетает в себе преимущества создания нового типа с простотой кортежа. Вы определяете её с помощью ключевого слова struct, за которым следует имя типа и типы полей в скобках:
struct Color(i32, i32, i32);Это создает тип Color, который содержит три значения i32, представляющих значения цвета RGB. В отличие от обычных структур, вы не указываете имена полей — вы обращаетесь к значениям по их позиции, так же, как и в кортежах.
Чтобы создать экземпляр кортежной структуры, укажите значения в круглых скобках:
let red = Color(255, 0, 0);Вы можете получить доступ к отдельным полям, используя точечную нотацию с индексом поля: red.0 дает вам первое значение, red.1 второе и так далее.
Задание
ЛегкоВы получите три входных значения: значение красного (как целое число), значение зеленого (как целое число) и значение синего (как целое число). Определите кортежную структуру Color, которая содержит три значения i32, представляющих компоненты цвета RGB. Создайте экземпляр этой кортежной структуры, используя входные значения, затем обратитесь к каждому компоненту цвета и выведите его, используя индексную нотацию.
Требования:
- Определите кортежную структуру
Colorс тремя полями типаi32 - Прочитайте первое входное значение и преобразуйте его в
i32для значения красного - Прочитайте второе входное значение и преобразуйте его в
i32для значения зеленого - Прочитайте третье входное значение и преобразуйте его в
i32для значения синего - Создайте экземпляр кортежной структуры
Colorс этими значениями - Обратитесь к каждому полю, используя точечную нотацию с индексами (0, 1, 2), и выведите информацию о цвете в точном формате, указанном ниже
Ввод:
- Первая строка: Значение красного как целое число (например,
255) - Вторая строка: Значение зеленого как целое число (например,
128) - Третья строка: Значение синего как целое число (например,
0)
Вывод:
- Первая строка:
Red: [red_value] - Вторая строка:
Green: [green_value] - Третья строка:
Blue: [blue_value]
Шпаргалка
Кортежная структура — это структура без именованных полей. Она сочетает в себе преимущества создания нового типа с простотой кортежа.
Определите кортежную структуру, используя ключевое слово struct, за которым следует имя типа и типы полей в круглых скобках:
struct Color(i32, i32, i32);Создайте экземпляр, указав значения в круглых скобках:
let red = Color(255, 0, 0);Доступ к полям осуществляется с помощью точечной нотации с использованием индекса поля:
red.0 // первое значение
red.1 // второе значение
red.2 // третье значениеПопробуйте сами
use std::io;
// TODO: Определите здесь вашу кортежную структуру Color
fn main() {
// Чтение значения красного цвета
let mut red_input = String::new();
io::stdin().read_line(&mut red_input).expect("Failed to read line");
let red: i32 = red_input.trim().parse().expect("Invalid input");
// Чтение значения зеленого цвета
let mut green_input = String::new();
io::stdin().read_line(&mut green_input).expect("Failed to read line");
let green: i32 = green_input.trim().parse().expect("Invalid input");
// Чтение значения синего цвета
let mut blue_input = String::new();
io::stdin().read_line(&mut blue_input).expect("Failed to read line");
let blue: i32 = blue_input.trim().parse().expect("Invalid input");
// TODO: Создайте экземпляр кортежной структуры Color, используя введенные значения
// TODO: Получите доступ и выведите каждый компонент цвета, используя индексную нотацию
// Формат: Red: [value], Green: [value], Blue: [value]
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Продвинутое управление потоком выполнения
Выражение 'match'Сопоставление нескольких значенийСопоставление диапазоновВыражение 'if let'Циклы как выраженияИтоги — Простой парсер команд4Группировка данных с помощью структур
Что такое структура?Обзор структурДоступ к полям структурыИзменяемые структурыСтруктуры как параметры функцийКортежные структурыИтоги: создание структуры Book7Обработка ошибок с помощью 'Result'
Что такое 'Result'?Использование 'match' с 'Result'is_ok() и is_err()Сокращения: unwrap и expectОператор вопросительного знака '?'Парсинг строк в числаИтоги: функция безопасного деления10Замыкания и анонимные функции
Что такое замыкание?Определение простого замыканияЗамыкания с параметрамиЗахват окруженияИтоги: Простое замыкание-сумматор2Введение в векторы
Что такое вектор?Создание вектораДобавление элементов с помощью pushДоступ к элементам вектораИтерация по векторуИзменяемая итерацияУдаление элементовИтоги — Простой счетчик очков5Пары «ключ-значение» в Hash Map
Что такое Hash Map?Создание Hash MapВставка пар «ключ-значение»Доступ к значениямИтерация по Hash MapОбновление значенияУдаление парыИтоги — Счетчик слов8Проект: Простой инвентарь товаров
Настройка проектаДобавление товараПроверка наличияПродажа товараСобираем всё воедино3Список дел в командной строке
Настройка проектаДобавление задачиПросмотр всех задачУдаление задачиИтоговый код6Обработка отсутствия значения с 'Option'
Что такое 'Option'?Использование 'match' с 'Option'is_some() и is_none()Распаковка 'Option'Метод expectЗначение по умолчанию: unwrap_orИтоги: поиск элемента