TheUpperCode | Розробка сайту | Ruby on Rails
  • Головна
  • Послуги
  • Про нас
  • Співпраця
  • Проекти
  • Блог
  • Контакти
  • en
    • en
Назад
logo

Дизайн

UX/UI дизайн

Web дизайн

Продуктовий дизайн

Вебсайт

Розробка

Підтримка

Оновлення

CRM-система

Розробка

Підтримка

Оновлення

Ruby on Rails

Розробка

Підтримка

Оновлення

Автоматизація

Бізнес процеси

Підтримка

Оновлення

News
/
Типи даних, змінні, оператори в Ruby. Array, Hashes

Типи даних, змінні, оператори в Ruby. Array, Hashes

24 April 2023
Навчання
TheUpperCode | Типи даних, змінні, оператори в Ruby. Array, Hashes | Ruby on Rails

Сьогодні на уроці:

  1. Array (масиви)
  2. Hash

 

Доступні оператори 

Тепер давайте подивимося на оператори, які можна використовувати з числовими значеннями: 

  • Сумування: + 
  • Віднімання: - 
  • Множення: * 
  • Ділення: / 
  • Знаходження залишку від ділення : % 
  • Ступінь числа: ** 
  • Менше ніж: < 
  • Менше-рівно: <= 
  • Більше ніж: > 
  • Більше-рівно: >= 
  • Рівно, перевіряє рівність чисел: == 

 

Найдивнішим оператором тут може бути %. 

# залишок від 5 поділений на 2 => 1 

Результат: 1

# залишок від 13 поділеного на 5 => 3 

Результат: 3

# 2 у степені 3 => 23 = 8 

Результат: 8

Це методи для перетворення числового значення в щось інше або інший тип числового класу: 

  • to_i (перетворює значення на ціле (на Integer)) 
  • to_f (перетворює значення на число з плаваючою комою (на Float)) 
  • to_s (перетворює числове значення на рядкове значення(на String)) 

Зазвичай ми використовуємо плаваюче значення для ціни, щоб також показати копійки. Отже, давайте перетворимо його на «Float» перед виведенням. Щоб вивести його на екран, давайте перетворимо його на String

Результат: Price of product is 4.0

Таким чином, ми перетворили ціле число на число з плаваючою комою, а потім перетворили його на String, щоб мати можливість виводити його на екран. 

P.S. якщо використовувати інтерполяцію, то метод to_s можна пропустити, оскільки інтерполяція сама перетворю кінцевий код на String 

Результат: Price of product is 4.0

Ще одна річ, яку ми повинні мати на увазі, це деталі операції поділу. Якщо обидва значення, які використовуються під час ділення (дільник або частка), є значеннями класу «Integer», тоді результат також Integer. Якщо одне зі значень у розділі є екземпляром класу "Float", то результат також буде значенням типу "Float". Наприклад: 

 

# Обидва значення є Integer (цілим числом). 

Результат: 3

 Ви могли помилково очікувати результат 3,5 

# Тільки одне зі значень є цілим числом. 

Результат: 3.5

# Давайте використаємо метод to_f 

Результат: 3.5

 

 Методи Numeric 

 

Even 

.even? - метод перевіряє, чи є значення, над яким ми працюємо, парним чи ні. Він повертає «true», якщо ціле число парне, і «false», якщо ціле число не парне. 

Результат: false
Результат: true

Odd 

. odd? - метод перевіряє, чи є значення, над яким ми працюємо, непарним чи ні. Він повертає «true», якщо ціле число непарне, і «false», якщо ціле число парне. 

Результат: true
Результат: false

Ceil 

Метод .ceil округлює числові значення типу «Float» до найближчого цілого більшого числа, ніж саме значення. 

Результат: 9
Результат: 7

Floor 

Метод .floor округлює числові значення типу “Float” до найближчого цілого числа, меншого за саме значення. 

Результат: 8
Результат: 6

 

Array (масиви)

 

Що таке Array (масив)? 

Масив — це вбудований клас Ruby, який містить список із нуля чи більше елементів і включає в себе методи, які допомагають легко додавати, отримувати доступ і перебирати всі ці елементи. 

Це корисно, тому що якби масиви не існували, вам довелося б використовувати багато змінних, щось типу такого: 

Але, натомість цього, за допомогою масива ви можете зробити так: 

Отже, ще раз. Масив — це впорядкований список елементів будь-якого типу. Ви можете визначити масив, помістивши список елементів у квадратні дужки, як у прикладі зверху. 

Приємна фішечка масивів? Ви можете помістити в масив будь-що! 

Наприклад: 

  • Numbers 
  • Strings 
  • Більше масивів! (це зробило б його багатовимірним масивом) 

Давайте дізнаємося більше про масиви, щоб ви могли використовувати їх якнайкраще! 

 

Масиви мають нульовий індекс 

 

Ви можете отримати доступ до елементів усередині масиву, використовуючи їхній індекс, який починається з 0. 

Якби у вас був масив зі словами «кіт», «собака» і «тигр», він мав би такий вигляд: 

Ось приклад коду, який представляє дані на зображенні: 

А тепер давайте дізнаємося, що ми можемо робити з масивами 

 

Методи масивів 

 

Давайте почнемо з вивчення того, як ви можете створити масив. 

Ви можете створити порожній масив, а потім додати в нього нові елементи, або ви можете створити масив із якимись певними значеннями. 

Ініціалізувати порожній масив: 

Ініціалізація масиву даними: 

Якщо ви створюєте масив лише з рядків, то ви можете уникнути необхідності вводити лапки для кожного рядка, створивши масив за допомогою %w. 

Наприклад: 

Тепер, коли у нас є масив, ви можете отримати доступ до елементів, які він містить. 

Ви також можете використовувати методи first та last: 

Ось як додати елементи до свого масиву: 

Обидва вони мають однаковий ефект, але << є кращим

 Ось як видалити елементи з масиву: 

Вилучає останній елемент із масиву та повертає його

 Або 

Видаляє перший елемент масиву

Є також методи shift та unshift, які подібні до pop/push, але видаляють або додають елементи перед масивом. 

Додає елемент перед масивом
Вилучає перший елемент масиву та повертає його

А як перевірити чи масив містить або включає певний елемент? 

Перевірте, чи існує значення в масиві в Ruby: 

Яка довжина масиву? (Іншими словами, скільки елементів він містить) 

Результат: 3

Ось невелика шпаргалка для вас: 

Масиви Ruby дуже корисні, і вони стануть вашим потужним союзником. 

Є ще дуже багато справді корисних та цікавих методів, але їх буде корисніше вивчати безпосередньо під час практики. 

Обов’язково попрактикуйтесь у створенні масиву, додаванні до нього елементів, доступі до елементів за індексом тощо. Практика робить нас досконалими! 

 

Hash

 

Що таке Hash (хеш) в Ruby? 

Hash — це структура даних, яка використовується для зберігання даних у формі УНІКАЛЬНИХ пар ключ-значення. На відміну від масивів, тут немає числових індексів, доступ до хеш-значень здійснюється за допомогою ключів. 

 

Приклади: 

  • Список назв країн і відповідних кодів країн (наприклад, ES ⇾ Іспанія) 
  • Словник, де кожне слово має список можливих визначень 
  • Доменне та його IP-адреса 

В коді це виглядає наступним чином: 

Ключ – «ES», значення – «Spain»

Хеш із трьома парами ключ/значення виглядає так: 

Де «a» — ключ, а 1 — відповідне значення для цього ключа.

Зверніть увагу, що пари ключ-значення розділені комами. 

Фігурні дужки + ключ зі значенням – так формується хеш. 

Використання хешу у ваших програмах Ruby може пришвидшити ваш код, якщо його використовувати в правильній ситуації. 

Іншими словами - у вас є дані, які є (або можуть бути перетворені в) у форматі словника, де дані можуть бути згруповані за ключами та пов’язаними значеннями. 

Зберігання значень у Hash 

 

Ви можете створити хеш із набором початкових значень, як це вже було продеменостровано. 

 Іншим варіантом додавання нових значень до існуючого хешу є: 

:orange це хеш-ключ і 4 – це його значення.

 Примітка: 

Чому двокрапка стоїть перед словом :orange, коли ми отримуємо доступ до значення, і після слова orange: коли ми створюємо хеш? Це новіший та кращий синтаксис, який дозволяє створювати хеші без символу хеш-ракети (=>), який є робочим, але старішим способом зробити це. 

Значенням може бути будь-який об’єкт Ruby: 

  • Strings 
  • Integers & Floats 
  • Arrays 

Ключі також можуть бути будь-якими, але символи (наприклад, :banana) і string-и є найпоширенішим типом ключів, які ви зустрінете. 

Пам'ятайте, що ключі унікальні, ми можемо мати лише один ключ :orange або один ключ :apple. Коли ви додаєте той самий ключ двічі, ви змінюєте його значення. 

 

Як отримати доступ до значень з Hash 

 

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

Результат: 4

У цьому і полягає суть хешів, щоб швидко знайти елемент за його ключем. 


Якщо ключа не існує, ви отримаєте nil. 

Результат: nil

Як альтернативу ви можете використовувати метод fetch, який дозволяє вказати значення за замовчуванням. 

Якщо ви використовуєте fetch без значення за замовчуванням (2-й аргумент), Ruby викличе exception(виняток) KeyError. 

Це корисно, оскільки ви знатимете, якого ключа не вистачає. 

 

Як об’єднати два Hash-і 


Ви можете взяти два хеші та об’єднати їх у новий хеш. 

Яким методом це робиться? Що ж, це не важко здогадатися. Метод називається merge (злиття). 

Ось як ним користуватися: 

Результат: {:a=>1, :b=>2, :c=>4}

Зауважте, що оскільки ключі унікальні, нові значення перезаписують старі значення. 

Ви можете використовувати цей факт для цікавих рішень, як-от створення хешу «за замовчуванням», який користувачі можуть змінити, передавши власний хеш. 

Якщо вам потрібно більше контролювати спосіб об’єднання ключів, ви можете передати блок: 

Де старі значення походять із defaults, а нові значення походять із preferences.

 

Кілька значень для одного ключа 


У словнику… Слова унікальні, але вони можуть мати кілька значень (визначень), пов’язаних з ними. Ви можете зробити це в Ruby наступним чином: 

Де dictionary[:creativity] дає вам масив, а [1] дає вам 2-й елемент із цього масиву.

Іншими словами: 

Ключ — це symbol(символ), а значення — масиви. Коли ви отримуєте доступ до хешу, ви отримуєте назад масив, до якого ви можете отримати доступ, як і до будь-якого іншого масиву. 

 

Як відсортувати Hash 

 

Ви можете сортувати масиви. Але чи знаєте ви, що ви також можете сортувати хеші? Коли ви сортуєте хеш, він сортується за ключем. 

Результат: [[:a, 2], [:b, 1]]

 Але ви також можете сортувати їх за значенням: 

Результат: [[:b, 1], [:a, 2], [:c, 3]]

Ви, напевно, помітили, що те, що ви отримуєте від сортування хешу, не є іншим хешем... А це масив! 

Але ви можете перетворити цей масив назад у хеш за допомогою методу to_h. 

Отримати всі ключі та значення з Hash

 

Якщо вам потрібен список усіх хеш-ключів, хороші новини, для цього є метод! 

Результат: [:apple, :banana]

Існує також метод, який дає вам масив, що містить значення хешу: 

Результат: [1, 2]

Якщо ви хочете дізнатися, чи існує ключ у хеші, замість того, щоб отримати їх масив, використовуйте метод 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

Автор курсу: Шкоропад Даниїл

Хочете приєднатися до нашої мети? Звертайтесь ;)
Зв'язатися
TheUpperCode | Copy our new post about usefull things in WebDevelopment with help Ruby on Rails
Copied
TheUpperCode | Our official Facebook page | Ruby on Rails
TheUpperCode | Our official LinkedIn page | Ruby on Rails
Більше новин
Як підтримувати Ruby on Rails проект в 2025-му році? 8 практичних порад
13 March 2025
TheUpperCode | Як підтримувати Ruby on Rails проект в 2025-му році? 8 практичних порад | Ruby on Rails
How to support a Ruby on Rails project in 2025? 8 practical tips
13 March 2025
TheUpperCode | How to support a Ruby on Rails project in 2025? 8 practical tips | Ruby on Rails
  • Головна
  • Про нас
  • Співпраця
  • Проекти
  • Блог
  • Контакти

TheUpperCode | Website development | Ruby on Rails