Recapitulação - Ações de Retângulo
Parte da seção Object Oriented Programming do Journey de Rust da Coddy — lição 7 de 61.
Desafio
FácilCrie uma struct Rectangle com dois campos: width (u32) e height (u32).
Adicione um bloco de implementação para Rectangle com o seguinte:
new— uma função associada que recebewidth: u32eheight: u32e retorna um novoRectanglearea— recebe&selfe retorna a área comou32scale— recebe&mut selfe umfactor: u32, multiplica tanto a largura quanto a altura pelo fator
Você receberá três entradas:
- Primeira linha: a largura (u32)
- Segunda linha: a altura (u32)
- Terceira linha: o fator de escala (u32)
Crie um Rectangle mutável usando Rectangle::new com as dimensões fornecidas. Imprima a área inicial, depois dimensione o retângulo pelo fator fornecido e imprima a nova área.
Formato de saída esperado:
{initial_area}
{scaled_area}Experimente você mesmo
use std::io;
// TODO: Defina a struct Rectangle aqui
// TODO: Adicione o bloco de implementação para Rectangle com:
// - new: função associada que recebe largura (width) e altura (height), retorna Rectangle
// - area: método que recebe &self, retorna u32
// - scale: método que recebe &mut self e um fator (factor), multiplica a largura e a altura
fn main() {
let mut input = String::new();
// Ler largura
io::stdin().read_line(&mut input).expect("Failed to read line");
let width: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Ler altura
io::stdin().read_line(&mut input).expect("Failed to read line");
let height: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Ler fator de escala
io::stdin().read_line(&mut input).expect("Failed to read line");
let factor: u32 = input.trim().parse().expect("Invalid number");
// TODO: Criar um Rectangle mutável usando Rectangle::new
// TODO: Imprimir a área inicial
// TODO: Escalar o retângulo pelo fator
// TODO: Imprimir a nova área
}Todas as lições de Object Oriented Programming
1Métodos e Comportamento
Introdução a Blocos de ImplementaçãoO Parâmetro SelfMétodos MutáveisFunções AssociadasMúltiplos Blocos de ImplementaçãoEncadeamento de MétodosRecapitulação - Ações de Retângulo4Projeto: Pet Virtual
Definindo o PetAlimentando o Pet7Traits Padrão
A Trait DebugA Trait DisplayClone e CopyTraits de IgualdadeRecapitulação - Ponto Imprimível10Projeto: Sistema de Documentos
A Trait DrawComponente de Texto2Encapsulamento e Módulos
Fundamentos de MódulosA Palavra-chave PublicCampos PrivadosGettersSettersRecapitulação - Cofre Seguro5Genéricos
Structs GenéricasMétodos GenéricosMúltiplos Tipos GenéricosFunções GenéricasRecapitulação - Ponto de Coordenada8Traits como Restrições
Sintaxe de Restrições de TraitRestrições MúltiplasA Cláusula WhereRetornando Tipos com TraitsRecapitulação - Impressora Genérica11Padrões de Projeto em Rust
Padrão NewtypeComposiçãoA Trait DropFrom e IntoRecapitulação - Mock de Smart Pointer3Enums Avançados
Enums com DadosMétodos em EnumsCorrespondência de Variantes de DadosO Enum Option RevisitadoRecapitulação - Enum Shape6Definição de Traits
O que é uma Trait?Implementando TraitsImplementações PadrãoSobrescrevendo PadrõesTraits com ParâmetrosRecapitulação - Media Player