Przegląd struktur
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 21 z 66.
Skoro już wiesz, czym są struktury, nauczmy się, jak je tworzyć i używać. Obejmuje to dwa kroki: najpierw zdefiniowanie struktury struktury, a następnie utworzenie jej instancji.
Aby zdefiniować strukturę, użyj słowa kluczowego struct, a następnie podaj nazwę struktury i jej pola w nawiasach klamrowych. Każde pole ma nazwę i typ:
struct User {
username: String,
active: bool,
}Tworzy to szablon struktury User z dwoma polami: username typu String oraz active typu bool.
Konwencja nazewnictwa: Nazwy struktur w Rust powinny być zapisane w PascalCase (nazywanym też UpperCamelCase), co oznacza, że każde słowo zaczyna się wielką literą, na przykład User, ProductItem lub ShoppingCart. Rust wyświetli ostrzeżenie, jeśli nie będziesz przestrzegać tej konwencji.
Po zdefiniowaniu struktury możesz tworzyć jej instancje, podając wartości dla każdego pola:
let user1 = User {
username: String::from("alice"),
active: true,
};Zwróć uwagę, że podajesz nazwę struktury, a po niej nawiasy klamrowe zawierające nazwy poszczególnych pól, dwukropek i ich wartości. Kolejność pól nie musi być zgodna z kolejnością ich definicji.
Aby uzyskać dostęp do pól instancji struktury, użyj notacji kropkowej: wpisz nazwę instancji, a następnie kropkę i nazwę pola:
println!("Username: {}", user1.username);
println!("Active: {}", user1.active);Tutaj user1.username odczytuje pole username zmiennej user1, a user1.active odczytuje pole active. Możesz używać tych wartości pól wszędzie tam, gdzie używałbyś zwykłej zmiennej.
Wyzwanie
ŁatwyOtrzymasz trzy dane wejściowe: nazwę produktu, cenę (jako liczbę dziesiętną) i ilość w magazynie (jako liczbę całkowitą). Zdefiniuj strukturę Product z trzema polami: name typu String, price typu f64 oraz stock typu i32. Następnie utwórz instancję tej struktury, używając wartości wejściowych, i wyświetl informacje o produkcie.
Wymagania:
- Zdefiniuj strukturę
Productz polami:name: String,price: f64orazstock: i32 - Odczytaj pierwsze dane wejściowe jako nazwę produktu
- Odczytaj drugze dane wejściowe i przekonwertuj je na
f64, aby uzyskać cenę - Odczytaj trzecie dane wejściowe i przekonwertuj je na
i32, aby uzyskać ilość w magazynie - Utwórz instancję struktury
Productz tymi wartościami - Wyświetl informacje o produkcie dokładnie w formacie pokazanym poniżej
Dane wejściowe:
- Pierwszy wiersz: nazwa produktu (np.
Laptop) - Drugi wiersz: cena jako liczba dziesiętna (np.
999.99) - Trzeci wiersz: ilość w magazynie jako liczba całkowita (np.
15)
Dane wyjściowe:
- Pierwszy wiersz:
Product: [name] - Drugi wiersz:
Price: $[price] - Trzeci wiersz:
Stock: [quantity]
Spróbuj swoich sił
use std::io;
// TODO: Zdefiniuj tutaj strukturę Product
fn main() {
// Wczytaj nazwę produktu
let mut name = String::new();
io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
// Wczytaj cenę
let mut price_input = String::new();
io::stdin().read_line(&mut price_input).expect("Failed to read line");
let price: f64 = price_input.trim().parse().expect("Failed to parse price");
// Wczytaj ilość sztuk w magazynie
let mut stock_input = String::new();
io::stdin().read_line(&mut stock_input).expect("Failed to read line");
let stock: i32 = stock_input.trim().parse().expect("Failed to parse stock");
// TODO: Utwórz instancję struktury Product, używając wartości wejściowych
// TODO: Wypisz informacje o produkcie w wymaganym formacie
}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