Іноді потрібно отримати випадкове булеве значення true/false у Ruby. Наприклад коли ми робимо seed бази даних у Rails та хочемо створити об'єкти максимально наближенні до реальних.
Варіант перший. Метод sample:
[true, false].sample
Щоб протестувати, як завжди - запускаємо IRB (Interactive Ruby Shell) в терміналі:
Варіант другий. Перемішати (метод shuffle) масив [true, false] та взяти перший чи другий елемент використовуючи індекс.
Перемішуємо елементи у масиві:
[true, false].shuffle
Після цього беремо перший [0] чи другий [1] елемент перемішаного масиву:
[true, false].shuffle[0]
або
[true, false].shuffle[1]
Варіант третій. Отримати випадкову цифру за допомогою методу rand та порівняти з одною з них.
1. Отримуємо випадково 0 чи 1;2. Порівнюємо отриману цифру, наприклад з 1.
Рандомна цифра:
rand(2)
=> 0
rand(2)
=> 1
Порівняння:
rand(2) == 1
=> false
rand(2) == 1
=> true
Варіант четвертий. Модіфікований третій варіант (з методом zero?):
rand(2).zero?
Метод zero? запитує, чи цифра дорівнює 0. Тут треба розуміти, що rand(2) дає 0 або 1.
Тож zero? більш красивіший варіант порівняння X == 0
Варіант 5. Бібліотека Faker.
Майже завжди можна побачити в проєкті бібліотеку Faker, яка дає отримати фейкові дані (для створеня тестових об'єктів).
В чистому ruby можна встановити Faker:
gem install 'faker'
підключаємо бібліотеку
require 'faker'
Отримуємо випадкове булеве значення за допомогою Faker:
Думаю варіантів для отримання рандомного булева значення у Ruby можна знайте ще багато. Саме цим Ruby й крутий. Одну й ту саму задачу можна робити багатьма способами. Та майже всі вони будуть 'правильними'. Тут вже питання за швидкістю виконання коду та його стилю (наскільки його легко читати та розуміти).
Поширити цей допис
Цитувати допис
Оберіть та скопіюйте потрібний стандарт цитування: