Récapitulatif - Actions sur le rectangle
Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 7 sur 61.
Défi
FacileCréez une structure Rectangle avec deux champs : width (u32) et height (u32).
Ajoutez un bloc d'implémentation pour Rectangle avec les éléments suivants :
new— une fonction associée qui prendwidth: u32etheight: u32et retourne un nouveauRectanglearea— prend&selfet retourne l'aire sous forme deu32scale— prend&mut selfet unfactor: u32, multiplie à la fois la largeur et la hauteur par le facteur
Vous recevrez trois entrées :
- Première ligne : la largeur (u32)
- Deuxième ligne : la hauteur (u32)
- Troisième ligne : le facteur d'échelle (u32)
Créez un Rectangle mutable en utilisant Rectangle::new avec les dimensions fournies. Affichez l'aire initiale, puis redimensionnez le rectangle par le facteur donné, et affichez la nouvelle aire.
Format de sortie attendu :
{initial_area}
{scaled_area}Essayez vous-même
use std::io;
// TODO: Définir la structure Rectangle ici
// TODO: Ajouter le bloc d'implémentation pour Rectangle avec :
// - new : fonction associée qui prend la largeur et la hauteur, retourne un Rectangle
// - area : méthode qui prend &self, retourne un u32
// - scale : méthode qui prend &mut self et un facteur, multiplie la largeur et la hauteur
fn main() {
let mut input = String::new();
// Lire la largeur
io::stdin().read_line(&mut input).expect("Failed to read line");
let width: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Lire la hauteur
io::stdin().read_line(&mut input).expect("Failed to read line");
let height: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Lire le facteur d'échelle
io::stdin().read_line(&mut input).expect("Failed to read line");
let factor: u32 = input.trim().parse().expect("Invalid number");
// TODO: Créer un Rectangle mutable en utilisant Rectangle::new
// TODO: Afficher l'aire initiale
// TODO: Mettre à l'échelle le rectangle par le facteur
// TODO: Afficher la nouvelle aire
}Toutes les leçons de Object Oriented Programming
1Méthodes et comportement
Introduction aux blocs d'implémentationLe paramètre SelfMéthodes mutablesFonctions associéesBlocs d'implémentation multiplesChaînage de méthodesRécapitulatif - Actions sur le rectangle4Projet : Animal virtuel
Définir l'animalNourrir l'animal7Traits standards
Le trait DebugLe trait DisplayClone et CopyLes traits d'égalitéRécapitulatif - Point affichable10Projet : Système de documents
Le trait DrawComposant texte2Encapsulation et modules
Bases des modulesLe mot-clé publicChamps privésGettersSettersRécapitulatif - Casier sécurisé5Généricité
Structures génériquesMéthodes génériquesPlusieurs types génériquesFonctions génériquesRécapitulatif - Point de coordonnées8Les Traits comme contraintes
Syntaxe des contraintes de traitContraintes multiplesLa clause whereRetourner des types avec des traitsRécapitulatif - Afficheur générique11Design Patterns en Rust
Le pattern NewtypeCompositionLe trait DropFrom et IntoRécapitulatif - Mock de Smart Pointer3Enums avancées
Enums avec donnéesMéthodes sur les EnumsMatching des variantes de donnéesL'Enum Option revisitéeRécapitulatif - Enum Shape6Définition des Traits
Qu'est-ce qu'un Trait ?Implémenter des TraitsImplémentations par défautRedéfinir les comportements par défautTraits avec paramètresRécapitulatif - Lecteur multimédia