У Ruby найпоширеніші два типи чисел:
-6, 0, 1, 25, 976 і 500000.-2.4, 0.1, 3.14, 16.984025 і 1024.0.Вони реалізовані через класи Integer і Float.
Ці класи мають методи, які перетворюють значення з одного типу на інший. Цілі числа Integer точні до цілої одиниці, тоді як Float має точність, дробову щодо цілого числа:
Integer#to_f: перетворює на нове число з плаваючою комоюFloat#ceil: округляє вгору до найближчого цілого числаFloat#floor: округляє вниз до найближчого цілого числаFloat#round: округляє до найближчого цілого числаFloat#to_i: усікає до найближчого цілого числаУ Ruby є так звані вирази керування потоком. Вони керують тим, як виконується програма, і приймають правдиве або неправдиве значення.
Існують оператори, які створюють правдиві або неправдиві значення. Їх називають операторами порівняння.
Є два основні керуючі вирази, які визначають, який код виконається, а який ні. Інакше кажучи, яка саме гілка спрацює.
Це if і вираз unless.
Оператори порівняння використовують, щоб порівнювати значення й повертати true або false.
Наведені нижче оператори потребують двох значень одного типу для порівняння. Якщо значення різних типів, компілятор видасть помилку. Ось список операторів і приклад, коли вони дають значення true:
| Метод | Опис | Приклад |
|---|---|---|
| < | менше ніж | 4 < 5 |
| <= | менше ніж або дорівнює | 4 <= 4 |
| > | більше ніж | 3 > 1 |
| >= | більше ніж або дорівнює | 2 >= 2 |
Оператори рівності й нерівності, на відміну від уже згаданих, можна застосовувати до значень будь-якого типу. Оператор == перевіряє, чи два значення рівні, і це включає перевірку типу значення. != працює так само, але повертає true, якщо значення не рівні, і false, якщо рівні. Ось список операторів рівності й нерівності та приклад, коли вони дають значення true:
| Метод | Опис | Приклад |
|---|---|---|
| == | дорівнює | 4 == 4 |
| != | не дорівнює | 5 != 4 |
Конструкцію if використовують, щоб перевірити, чи задана умова «правдива» чи «неправдива». Якщо умова правдива, виконається код усередині конструкції if. Конструкція if завершується ключовим словом end.
value = 1
if value == 1
"1 is equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
end
# => nil
Конструкція unless працює дуже схоже на конструкцію if, але виконує код усередині себе, якщо умова неправдива.
value = 1
unless value == 1
"1 is not equal to 1"
end
# => nil
unless value > 2
"1 is not greater than 2"
end
# => "1 is not greater than 2"
Конструкцію else можна використовувати разом із конструкцією if. Конструкція else виконається, якщо гілка if не виконалася.
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
Конструкцію elsif можна використовувати разом із конструкцією if. Конструкція elsif виконається, якщо гілка if не виконалася, а умова конструкції elsif правдива. Конструкції elsif можна обʼєднувати в ланцюжок, і виконається перша правдива умова. Наприкінці конструкції if також може бути конструкція else, яка виконається, якщо жодна з попередніх умов не була правдивою.
value = 1
if value != 1
"1 is not equal to 1"
elsif value > 2
"1 is greater than 2"
else
"1 is not equal to 1 and 1 is not greater than 2"
end
# => "1 is not equal to 1 and 1 is not greater than 2"
У цій вправі ми будемо писати код для аналізу виробництва на складальній лінії автомобільного заводу.
Швидкість складальної лінії може бути від 0 (вимкнено) до 10 (максимум).
На найменшій швидкості (1) щогодини виробляється 221 автомобіль.
Обсяг виробництва зростає лінійно зі швидкістю.
Тож за швидкості 4 вона має виробляти 4 * 221 = 884 автомобілі на годину.
Однак вищі швидкості підвищують імовірність випуску бракованих автомобілів, які потім доводиться відкидати.
Наступна таблиця показує, як швидкість впливає на успішність:
1 до 4: 100% успішності.5 до 8: 90% успішності.9: 80% успішності.10: 77% успішності.На нас чекають два завдання.
Реалізуйте метод AssemblyLine#production_rate_per_hour, щоб обчислити швидкість виробництва складальної лінії за годину з урахуванням успішності.
Зверніть увагу, що метод повертає екземпляр класу Float.
AssemblyLine.new(6).production_rate_per_hour
#=> 1193.4
Реалізуйте метод AssemblyLine#working_items_per_minute, щоб обчислити, скільки готових робочих автомобілів виготовляється за хвилину.
Зверніть увагу, що метод повертає екземпляр класу Integer.
AssemblyLine.new(6).working_items_per_minute
#=> 19
Зареєструйтеся на Exercism, щоб вивчати й опановувати Ruby, а також 21 концепція121 вправа та справжнє наставництво від людей, і все це безкоштовно.