Добавление книги
Часть раздела Логика и управление потоком путешествия по Ruby на Coddy. Урок 29 из 56.
Добавьте option 1. Add Book в loop меню. Когда пользователь выберет его, выполните prompt для title, author и genre книги, затем сделайте push нового hash в массив library.
Каждая книга изначально является непрочитанной (read: false).
Задание
ЛегкоРасширьте цикл меню. Когда choice равен "1":
- выведите через
printприглашениеTitle:и прочитайте название - выведите через
printAuthor:и прочитайте автора - выведите через
printGenre:и прочитайте жанр - добавьте
hashвида{ title:, author:, genre:, read: false }intolibraryс помощьюpush - выведите
Book added!
Сохраните поведение для 5. Exit из предыдущего урока (выводит Goodbye! и выполняет break).
Для входных данных 1, The Hobbit, Tolkien, Fantasy, а затем 5, вывод заканчивается на:
Choose an option: Title: Author: Genre: Book added!
--- Library Manager ---
...
Choose an option: Goodbye!Попробуйте сами
library = []
loop do
puts "--- Library Manager ---"
puts "1. Add Book"
puts "2. Search By Title"
puts "3. Filter By Genre"
puts "4. Mark As Read"
puts "5. Exit"
print "Choose an option: "
choice = gets.chomp
if choice == "5"
puts "Goodbye!"
break
end
# TODO: обработай choice == "1", запроси title/author/genre,
# добавь хеш в library, выведи "Book added!"
end
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки в деталях
Обзор методов строкИнтерполяция строкИтерация по строкамSplit и JoinИтоги — String Weaver4Блоки, Proc и лямбды
Что такое блок?do..end против фигурных скобокКлючевое слово yieldПараметры блокаProc и лямбдыИтоги: пользовательский итератор7Хеши. Часть 2
Hash.new со значениями по умолчаниюИтерация по хешамВложенные хешиСлияние и преобразованиеИтоги — счетчик частоты10Проект — Учёт студентов
Обзор проектаДобавить студента2Диапазоны
Что такое диапазон?Методы диапазоновДиапазоны в Case / WhenПовторение — практика по диапазонам5Мощь Enumerable
Select и RejectЦепочки MapReduce / Injectcount, all?, any?, none?group_by и partitionsort_by, min_by, max_byИтоги — Data Pipeline8Продвинутые условные конструкции
Case с классами и RegexМножественные значения в whenТернарный операторОднострочные if / unlessПовторение: Классификатор оценок3Двумерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваИтерация по двумерным массивамРаспространенные 2D-паттерныИтоги: Операции с матрицами6Проект — Менеджер библиотеки
Обзор проектаДобавление книгиПотренируйтесь самостоятельно: Онлайн-компилятор Ruby