Struktury krotkowe
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 25 z 66.
Podczas gdy zwykłe struktury używają nazwanych pól, Rust oferuje inny typ, nazywany strukturami krotkowymi. Pozwalają one zwięźlej tworzyć własne typy, gdy nie musisz osobno nazywać każdego pola.
Struktura krotkowa łączy zalety tworzenia nowego typu z prostotą krotki. Definiujesz ją za pomocą słowa kluczowego struct, po którym podajesz nazwę typu i typy pól w nawiasach:
struct Color(i32, i32, i32);Tworzy to typ Color, który przechowuje trzy wartości i32, reprezentujące wartości kolorów RGB. W przeciwieństwie do zwykłych struktur nie określasz nazw pól — uzyskujesz dostęp do wartości na podstawie ich pozycji, tak jak w przypadku krotek.
Aby utworzyć instancję krotki zdefiniowanej jako struktura, podajesz wartości w nawiasach:
let red = Color(255, 0, 0);Możesz uzyskać dostęp do poszczególnych pól, używając notacji kropkowej z indeksem pola: red.0 daje pierwszą wartość, red.1 drugą i tak dalej.
Wyzwanie
ŁatwyOtrzymasz trzy dane wejściowe: wartość czerwoną (jako liczbę całkowitą), wartość zieloną (jako liczbę całkowitą) i wartość niebieską (jako liczbę całkowitą). Zdefiniuj strukturę krotkową Color, która przechowuje trzy wartości i32 reprezentujące składowe koloru RGB. Utwórz instancję tej struktury krotkowej, używając wartości wejściowych, a następnie uzyskaj dostęp do każdej składowej koloru i wypisz ją, używając notacji indeksowej.
Wymagania:
- Zdefiniuj strukturę krotkową
Colorz trzema polami typui32 - Odczytaj pierwszą wartość wejściową i przekonwertuj ją na
i32jako wartość czerwoną - Odczytaj drugą wartość wejściową i przekonwertuj ją na
i32jako wartość zieloną - Odczytaj trzecią wartość wejściową i przekonwertuj ją na
i32jako wartość niebieską - Utwórz instancję struktury krotkowej
Colorz tymi wartościami - Uzyskaj dostęp do każdego pola za pomocą notacji kropkowej z indeksami (0, 1, 2) i wypisz informacje o kolorze w dokładnym formacie pokazanym poniżej
Dane wejściowe:
- Pierwsza linia: wartość czerwona jako liczba całkowita (np.
255) - Druga linia: wartość zielona jako liczba całkowita (np.
128) - Trzecia linia: wartość niebieska jako liczba całkowita (np.
0)
Dane wyjściowe:
- Pierwsza linia:
Red: [red_value] - Druga linia:
Green: [green_value] - Trzecia linia:
Blue: [blue_value]
Spróbuj swoich sił
use std::io;
// TODO: Zdefiniuj tutaj strukturę krotkową Color
fn main() {
// Odczytaj wartość składowej czerwonej
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");
// Odczytaj wartość składowej zielonej
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");
// Odczytaj wartość składowej niebieskiej
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: Utwórz instancję struktury krotkowej Color, używając wartości wejściowych
// TODO: Uzyskaj dostęp do każdej składowej koloru za pomocą indeksu i ją wypisz
// Format: Red: [value], Green: [value], Blue: [value]
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane sterowanie przepływem
Wyrażenie „match”Dopasowywanie wielu wartościDopasowywanie zakresówWyrażenie „if let”Pętle jako wyrażeniaPodsumowanie — prosty parser poleceń4Grupowanie danych za pomocą struktur
Czym jest struktura?Przegląd strukturDostęp do pól strukturyModyfikowalne strukturyStruktury jako parametry funkcjiStruktury krotkowePodsumowanie — utwórz strukturę Book2Wprowadzenie do wektorów
Czym jest wektor?Tworzenie wektoraDodawanie elementów za pomocą pushDostęp do elementów wektoraIterowanie po wektorzeIterowanie z możliwością modyfikacjiUsuwanie elementówPodsumowanie — prosty licznik punktów5Pary klucz–wartość z mapami hashującymi
Czym jest mapa haszująca?Tworzenie mapy haszującejWstawianie par klucz–wartośćDostęp do wartościIterowanie po mapie haszującejAktualizowanie wartościUsuwanie paryPodsumowanie – licznik słów8Projekt: Prosty system inwentaryzacji
Konfiguracja projektuDodawanie produktuSprawdzanie stanu magazynowegoSprzedaż produktuŁączenie wszystkiego w całość3Lista zadań w wierszu poleceń
Konfiguracja projektuDodawanie zadaniaWyświetlanie wszystkich zadańUsuwanie zadaniaKońcowy kodPoćwicz samodzielnie: Kompilator Rust online