Relatório de Status
Parte da seção Object Oriented Programming do Journey de Rust da Coddy. Lição 22 de 61.
Desafio
FácilSeu animal de estimação virtual está progredindo bem! Agora vamos dar a ele a capacidade de relatar como está se sentindo. Nesta etapa, você adicionará um método status que fornece uma visão geral completa do estado atual do seu animal de estimação.
O relatório de status deve descrever a condição do seu animal de estimação com base em seus níveis de energia e fome. Seu animal de estimação pode estar em diferentes humores, dependendo de quão bem você tem cuidado dele:
- Se a energia for
50ou superior E a fome for50ou inferior, seu animal de estimação está happy - Caso contrário, seu animal de estimação está tired
Adicione um método status ao seu Pet que receba &self e imprima um relatório de status completo mostrando o nome, energia, fome e humor do animal de estimação.
O relatório de status deve seguir este formato exato:
--- Status Report ---
Name: {name}
Energy: {energy}
Hunger: {hunger}
Mood: {mood}No seu main.rs, leia o nome, a energia e os valores de fome do animal de estimação, configure seu animal de estimação com esses valores e, em seguida, chame o método status para exibir o relatório.
Por exemplo, se a entrada for:
Buddy
70
30A saída deve ser:
--- Status Report ---
Name: Buddy
Energy: 70
Hunger: 30
Mood: happyE se a entrada for:
Max
40
60A saída deve ser:
--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tiredEste método oferece uma maneira rápida de verificar o bem-estar do seu animal de estimação a qualquer momento!
Experimente você mesmo
mod pet;
use pet::Pet;
fn main() {
let mut name = String::new();
std::io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
let mut energy_input = String::new();
std::io::stdin().read_line(&mut energy_input).expect("Failed to read line");
let initial_energy: u32 = energy_input.trim().parse().expect("Failed to parse energy");
let mut hunger_input = String::new();
std::io::stdin().read_line(&mut hunger_input).expect("Failed to read line");
let initial_hunger: u32 = hunger_input.trim().parse().expect("Failed to parse hunger");
let mut my_pet = Pet::new(name);
my_pet.set_energy(initial_energy);
my_pet.set_hunger(initial_hunger);
my_pet.play();
println!("Energy: {}", my_pet.energy());
println!("Hunger: {}", my_pet.hunger());
}
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 PlayerPratique por conta própria: Compilador de Rust online