Добавление книги
Часть раздела Логика и управление потоком путешествия по 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Строки: подробный разбор
Обзор методов строкИнтерполяция строкПеребор строкРазделение и объединениеПовторение — String Weaver4Блоки, Proc и Lambda
Что такое блок?do..end и фигурные скобкиКлючевое слово yieldПараметры блокаProc и LambdaПовторение — пользовательский итератор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Повторение — конвейер данных3Двумерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваПеребор двумерных массивовРаспространённые шаблоны для двумерных массивовПовторение — операции с матрицами6Проект — Менеджер библиотеки
Обзор проектаДобавление книгиПотренируйтесь самостоятельно: Онлайн-компилятор Ruby