Тепер давайте подивимося на оператори, які можна використовувати з числовими значеннями:
Найдивнішим оператором тут може бути %.
# залишок від 5 поділений на 2 => 1
# залишок від 13 поділеного на 5 => 3
# 2 у степені 3 => 23 = 8
Це методи для перетворення числового значення в щось інше або інший тип числового класу:
Зазвичай ми використовуємо плаваюче значення для ціни, щоб також показати копійки. Отже, давайте перетворимо його на «Float» перед виведенням. Щоб вивести його на екран, давайте перетворимо його на String
Таким чином, ми перетворили ціле число на число з плаваючою комою, а потім перетворили його на String, щоб мати можливість виводити його на екран.
P.S. якщо використовувати інтерполяцію, то метод to_s можна пропустити, оскільки інтерполяція сама перетворю кінцевий код на String
Ще одна річ, яку ми повинні мати на увазі, це деталі операції поділу. Якщо обидва значення, які використовуються під час ділення (дільник або частка), є значеннями класу «Integer», тоді результат також Integer. Якщо одне зі значень у розділі є екземпляром класу "Float", то результат також буде значенням типу "Float". Наприклад:
# Обидва значення є Integer (цілим числом).
Ви могли помилково очікувати результат 3,5
# Тільки одне зі значень є цілим числом.
# Давайте використаємо метод to_f
Even
.even? - метод перевіряє, чи є значення, над яким ми працюємо, парним чи ні. Він повертає «true», якщо ціле число парне, і «false», якщо ціле число не парне.
Odd
. odd? - метод перевіряє, чи є значення, над яким ми працюємо, непарним чи ні. Він повертає «true», якщо ціле число непарне, і «false», якщо ціле число парне.
Ceil
Метод .ceil округлює числові значення типу «Float» до найближчого цілого більшого числа, ніж саме значення.
Floor
Метод .floor округлює числові значення типу “Float” до найближчого цілого числа, меншого за саме значення.
Що таке Array (масив)?
Масив — це вбудований клас Ruby, який містить список із нуля чи більше елементів і включає в себе методи, які допомагають легко додавати, отримувати доступ і перебирати всі ці елементи.
Це корисно, тому що якби масиви не існували, вам довелося б використовувати багато змінних, щось типу такого:
Але, натомість цього, за допомогою масива ви можете зробити так:
Отже, ще раз. Масив — це впорядкований список елементів будь-якого типу. Ви можете визначити масив, помістивши список елементів у квадратні дужки, як у прикладі зверху.
Приємна фішечка масивів? Ви можете помістити в масив будь-що!
Наприклад:
Давайте дізнаємося більше про масиви, щоб ви могли використовувати їх якнайкраще!
Ви можете отримати доступ до елементів усередині масиву, використовуючи їхній індекс, який починається з 0.
Якби у вас був масив зі словами «кіт», «собака» і «тигр», він мав би такий вигляд:
Ось приклад коду, який представляє дані на зображенні:
А тепер давайте дізнаємося, що ми можемо робити з масивами
Давайте почнемо з вивчення того, як ви можете створити масив.
Ви можете створити порожній масив, а потім додати в нього нові елементи, або ви можете створити масив із якимись певними значеннями.
Ініціалізувати порожній масив:
Ініціалізація масиву даними:
Якщо ви створюєте масив лише з рядків, то ви можете уникнути необхідності вводити лапки для кожного рядка, створивши масив за допомогою %w.
Наприклад:
Тепер, коли у нас є масив, ви можете отримати доступ до елементів, які він містить.
Ви також можете використовувати методи first та last:
Ось як додати елементи до свого масиву:
Ось як видалити елементи з масиву:
Або
Є також методи shift та unshift, які подібні до pop/push, але видаляють або додають елементи перед масивом.
А як перевірити чи масив містить або включає певний елемент?
Перевірте, чи існує значення в масиві в Ruby:
Яка довжина масиву? (Іншими словами, скільки елементів він містить)
Ось невелика шпаргалка для вас:
Масиви Ruby дуже корисні, і вони стануть вашим потужним союзником.
Є ще дуже багато справді корисних та цікавих методів, але їх буде корисніше вивчати безпосередньо під час практики.
Обов’язково попрактикуйтесь у створенні масиву, додаванні до нього елементів, доступі до елементів за індексом тощо. Практика робить нас досконалими!
Що таке Hash (хеш) в Ruby?
Hash — це структура даних, яка використовується для зберігання даних у формі УНІКАЛЬНИХ пар ключ-значення. На відміну від масивів, тут немає числових індексів, доступ до хеш-значень здійснюється за допомогою ключів.
Приклади:
В коді це виглядає наступним чином:
Хеш із трьома парами ключ/значення виглядає так:
Зверніть увагу, що пари ключ-значення розділені комами.
Фігурні дужки + ключ зі значенням – так формується хеш.
Використання хешу у ваших програмах Ruby може пришвидшити ваш код, якщо його використовувати в правильній ситуації.
Іншими словами - у вас є дані, які є (або можуть бути перетворені в) у форматі словника, де дані можуть бути згруповані за ключами та пов’язаними значеннями.
Ви можете створити хеш із набором початкових значень, як це вже було продеменостровано.
Іншим варіантом додавання нових значень до існуючого хешу є:
Примітка:
Чому двокрапка стоїть перед словом :orange, коли ми отримуємо доступ до значення, і після слова orange: коли ми створюємо хеш? Це новіший та кращий синтаксис, який дозволяє створювати хеші без символу хеш-ракети (=>), який є робочим, але старішим способом зробити це.
Значенням може бути будь-який об’єкт Ruby:
Ключі також можуть бути будь-якими, але символи (наприклад, :banana) і string-и є найпоширенішим типом ключів, які ви зустрінете.
Пам'ятайте, що ключі унікальні, ми можемо мати лише один ключ :orange або один ключ :apple. Коли ви додаєте той самий ключ двічі, ви змінюєте його значення.
Ви отримуєте доступ до хешу за допомогою ключа. Якщо вам потрібен прямий доступ до значень, то хеш може не підійти для ваших даних.
У цьому і полягає суть хешів, щоб швидко знайти елемент за його ключем.
Якщо ключа не існує, ви отримаєте nil.
Як альтернативу ви можете використовувати метод fetch, який дозволяє вказати значення за замовчуванням.
Якщо ви використовуєте fetch без значення за замовчуванням (2-й аргумент), Ruby викличе exception(виняток) KeyError.
Це корисно, оскільки ви знатимете, якого ключа не вистачає.
Ви можете взяти два хеші та об’єднати їх у новий хеш.
Яким методом це робиться? Що ж, це не важко здогадатися. Метод називається merge (злиття).
Ось як ним користуватися:
Зауважте, що оскільки ключі унікальні, нові значення перезаписують старі значення.
Ви можете використовувати цей факт для цікавих рішень, як-от створення хешу «за замовчуванням», який користувачі можуть змінити, передавши власний хеш.
Якщо вам потрібно більше контролювати спосіб об’єднання ключів, ви можете передати блок:
У словнику… Слова унікальні, але вони можуть мати кілька значень (визначень), пов’язаних з ними. Ви можете зробити це в Ruby наступним чином:
Іншими словами:
Ключ — це symbol(символ), а значення — масиви. Коли ви отримуєте доступ до хешу, ви отримуєте назад масив, до якого ви можете отримати доступ, як і до будь-якого іншого масиву.
Ви можете сортувати масиви. Але чи знаєте ви, що ви також можете сортувати хеші? Коли ви сортуєте хеш, він сортується за ключем.
Але ви також можете сортувати їх за значенням:
Ви, напевно, помітили, що те, що ви отримуєте від сортування хешу, не є іншим хешем... А це масив!
Але ви можете перетворити цей масив назад у хеш за допомогою методу to_h.
Якщо вам потрібен список усіх хеш-ключів, хороші новини, для цього є метод!
Існує також метод, який дає вам масив, що містить значення хешу:
Якщо ви хочете дізнатися, чи існує ключ у хеші, замість того, щоб отримати їх масив, використовуйте метод key?. Цей метод повертає значення true або false.
Ви дізналися про хеші Ruby, корисну структуру даних, яка складається з пар ключ-значення. Ви також дізналися, як отримати доступ до хешу за ключем і як зберігати нові дані в хеші. Тепер відкрийте irb та почніть практивкуватися з хешами!
Трохи офіційної документації і ресурсів, де можна «підчерпнути» додатковї інформації.
Типи даних:
String: https://ruby-doc.org/3.2.0/String.html
Integer: https://ruby-doc.org/core-3.1.0/Integer.html
Float: https://ruby-doc.org/core-3.1.0/Float.html
Array: https://ruby-doc.org/core-3.1.0/Array.html
Hash: https://ruby-doc.org/core-3.1.0/Hash.html
Лаконічна практика, без встановлення компілятора: https://try.ruby-lang.org/
Завантажити сьогоднішній матеріал файлом можна тут.
Група в телеграмі: https://t.me/ruby4you
Автор курсу: Шкоропад Даниїл