Кормление питомца
Часть раздела Object Oriented Programming путешествия по Rust на Coddy — урок 20 из 61.
Задание
ЛегкоТеперь, когда ваш питомец существует, пришло время дать ему возможность есть! На этом этапе вы добавите метод feed, который позволит вам позаботиться о голоде вашего питомца.
Опираясь на существующий модуль pet.rs, добавьте метод feed, который уменьшает уровень голода питомца. При кормлении голод питомца должен уменьшаться на 30, но он никогда не должен опускаться ниже 0. После кормления метод должен вывести сообщение о том, что питомцу понравилась еда.
Вам также понадобится геттер-метод hunger, чтобы вы могли проверять уровень голода питомца извне модуля.
В main.rs вы будете считывать имя питомца и начальное значение голода. Создайте своего питомца, установите его начальный голод, покормите его один раз, а затем выведите обновленный уровень голода.
Вывод должен соответствовать следующему формату:
{name} enjoyed the meal!
Hunger: {hunger_level}Например, если на вход подается:
Buddy
50Вывод должен быть таким:
Buddy enjoyed the meal!
Hunger: 20И если голод начинается с 20, кормление должно привести его к 0 (не к отрицательному значению):
Buddy enjoyed the meal!
Hunger: 0Вам нужно будет добавить метод set_hunger для инициализации голода в целях тестирования, так как конструктор new по умолчанию устанавливает голод в 0.
Попробуйте сами
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 my_pet = Pet::new(name);
println!("Pet name: {}", my_pet.name());
}Все уроки раздела Object Oriented Programming
1Методы и поведение
Введение в блоки реализацииПараметр SelfИзменяемые методыАссоциированные функцииНесколько блоков реализацииЦепочки вызовов методовИтоги: действия с Rectangle4Проект: Виртуальный питомец
Определение питомцаКормление питомца2Инкапсуляция и модули
Основы модулейКлючевое слово PublicПриватные поляГеттерыСеттерыИтоги — Безопасный сейф5Обобщения
Обобщённые структурыОбобщённые методыНесколько обобщённых типовОбобщённые функцииПовторение — Координатная точка8Трейты как ограничения
Синтаксис ограничений трейтовМножественные ограниченияКонструкция whereВозврат типов с трейтамиИтоги — Обобщённый принтер11Паттерны проектирования в Rust
Паттерн NewtypeКомпозицияТрейт DropFrom и IntoИтоги — Мок-объект Smart Pointer3Продвинутые перечисления
Перечисления с даннымиМетоды в перечисленияхСопоставление вариантов с даннымиСнова об Option EnumИтоги — перечисление Shape6Определение трейтов
Что такое трейт?Реализация трейтовРеализации по умолчаниюПереопределение реализаций по умолчаниюТрейты с параметрамиИтоги — Media Player