Powtórzenie — działania na prostokącie
Część sekcji Programowanie obiektowe ścieżki Rust w Coddy. Lekcja 7 z 61.
Wyzwanie
ŁatwyUtwórz strukturę Rectangle z dwoma polami: width (u32) i height (u32).
Dodaj blok implementacji dla Rectangle zawierający:
new: funkcję skojarzoną, która przyjmujewidth: u32iheight: u32, a następnie zwraca nowyRectanglearea: przyjmuje&selfi zwraca pole powierzchni jakou32scale: przyjmuje&mut selfifactor: u32, a następnie mnoży zarówno szerokość, jak i wysokość przez ten współczynnik
Otrzymasz trzy dane wejściowe:
- Pierwszy wiersz: szerokość (u32)
- Drugi wiersz: wysokość (u32)
- Trzeci wiersz: współczynnik skalowania (u32)
Utwórz mutowalny Rectangle za pomocą Rectangle::new, używając podanych wymiarów. Wyświetl początkowe pole powierzchni, następnie przeskaluj prostokąt o podany współczynnik i wyświetl nowe pole powierzchni.
Oczekiwany format wyjścia:
{initial_area}
{scaled_area}Spróbuj swoich sił
use std::io;
// TODO: Zdefiniuj tutaj strukturę Rectangle
// TODO: Dodaj blok implementacji dla Rectangle zawierający:
// - new: funkcja powiązana, która przyjmuje width i height oraz zwraca Rectangle
// - area: metoda, która przyjmuje &self i zwraca u32
// - scale: metoda, która przyjmuje &mut self oraz factor i mnoży width oraz height przez factor
fn main() {
let mut input = String::new();
// Wczytaj szerokość
io::stdin().read_line(&mut input).expect("Failed to read line");
let width: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Wczytaj wysokość
io::stdin().read_line(&mut input).expect("Failed to read line");
let height: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Wczytaj współczynnik skalowania
io::stdin().read_line(&mut input).expect("Failed to read line");
let factor: u32 = input.trim().parse().expect("Invalid number");
// TODO: Utwórz modyfikowalny obiekt Rectangle za pomocą Rectangle::new
// TODO: Wypisz początkowe pole powierzchni
// TODO: Przeskaluj prostokąt, używając factor
// TODO: Wypisz nowe pole powierzchni
}Wszystkie lekcje w sekcji Programowanie obiektowe
1Metody i zachowanie
Wprowadzenie do bloków implementacjiParametr selfMetody modyfikująceFunkcje powiązaneWiele bloków implementacjiŁańcuchowe wywoływanie metodPowtórzenie — działania na prostokącie4Projekt: Wirtualne zwierzątko
Definiowanie zwierzątkaKarmienie zwierzątka7Standardowe cechy
Cecha DebugCecha DisplayClone i CopyCechy równościPowtórka – punkt do wydrukowania10Projekt: System dokumentów
Trait DrawKomponent tekstowy2Hermetyzacja i moduły
Podstawy modułówSłowo kluczowe publicPola prywatneGetterySetteryPodsumowanie — bezpieczna skrytka5Typy generyczne
Struktury generyczneMetody generyczneWiele typów generycznychFunkcje generycznePodsumowanie – punkt współrzędnych8Cechy jako ograniczenia
Składnia ograniczeń cechWiele ograniczeńKlauzula whereZwracanie typów z użyciem cechPodsumowanie — generyczna drukarka11Wzorce projektowe w Rust
Wzorzec NewtypeKompozycjaTrait DropFrom i IntoPodsumowanie — atrapowy inteligentny wskaźnik3Zaawansowane typy wyliczeniowe
Typy wyliczeniowe z danymiMetody typów wyliczeniowychDopasowywanie wariantów danychTyp wyliczeniowy Option — powtórzeniePodsumowanie — typ wyliczeniowy Shape6Definiowanie cech
Czym jest cecha?Implementowanie cechImplementacje domyślneNadpisywanie wartości domyślnychCechy z parametramiPowtórzenie — odtwarzacz multimedialnyPoćwicz samodzielnie: Kompilator Rust online