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 Player