Треки
/
Ruby
Ruby
/
Вправи
/
Кіноглядач
Кіноглядач

Кіноглядач

Навчальна вправа

Вступ

Тернарний оператор

Тернарний оператор - це коротший спосіб записати прості конструкції if/else. Якщо конструкція if/else містить лише дві гілки, одну для випадку, коли умова є правдою, і одну для випадку, коли вона є неправдою, її можна переписати як тернарний оператор.

Тернарні оператори використовують комбінацію символів ? і :, щоб розділити умову:

condition ? true_branch : false_branch

Код ліворуч від ? - це умова, а код праворуч містить дві можливі гілки, розділені символом :. Якщо умова - правда, виконується код ліворуч від :. Якщо умова - неправда, тоді виконується код праворуч від :.

Наприклад:

if traffic_light == 'green'
  cross_the_road
else
  wait
end

можна переписати так:

traffic_light == 'green' ? cross_the_road : wait

Вказівки

У цій вправі ми створимо правила для сайту кінотеатру.

1. Перевірте, чи має відвідувач кінотеатру право на знижку для пенсіонерів

Кінотеатр пропонує знижку для «пенсіонерів за віком». Хто досяг 60 років або старший, платить за квиток 10.00. Молодші платять повну ціну 15.00.

Напишіть метод Moviegoer#ticket_price, використавши тернарний оператор.

Moviegoer.new(21).ticket_price
#=> 15

Moviegoer.new(65).ticket_price
#=> 10

2. Перевірте, чи можна відвідувачу дивитися фільми жахів

У кінотеатрі діє спрощена система перевірки віку. Якщо глядачеві 18 років або більше, він може дивитися фільми жахів. Якщо менше, то не може.

Реалізуйте метод Moviegoer#watch_scary_movie?. Він має повертати, чи дозволено дивитися фільм.

Moviegoer.new(21).watch_scary_movie?
#=> true

Moviegoer.new(17).watch_scary_movie?
#=> false

3. Перевірте, чи має відвідувач кінотеатру право на безкоштовний попкорн

У кінотеатрі є програма «Кіноклуб». Учасники отримують безкоштовний попкорн, коли дивляться будь-який фільм.

Реалізуйте метод Moviegoer.claim_free_popcorn!. Якщо відвідувач є учасником кіноклубу, він має отримати свій безкоштовний попкорн. Якщо ні, метод має згенерувати виняток UnsupportedOperation, визначений на початку коду.

Moviegoer.new(21, member: true).claim_free_popcorn!
#=> 🍿

Moviegoer.new(17, member: false).claim_free_popcorn!
#=> Exception was raised! (NotMovieClubMemberError)
Note

У цій вправі ми маємо визначити виняток UnsupportedOperation для конкретної області видимості.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Ruby Exercism

Час розпочати Кіноглядач?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Ruby, а також 21 концепція121 вправа та справжнє наставництво від людей, і все це безкоштовно.