В попередніх уроках ми вже багато разів зустрічалися та працювали з методами Ruby. Але давайте розберемося трохи чіткіше та додатково в них!
За допомогою методів в Ruby можна визначити блок коду, який можна використовувати багато разів в програмі. Метод - це функція або підпрограма, яка виконується в контексті об'єкта. В даній статті я розгляну різні типи методів, як вони працюють та надам приклади.
У Ruby є два типи методів: методи класу та методи екземпляра. Методи класу виконуються в контексті класу, а методи екземпляра - в контексті екземпляра класу.
Визначення методу в Ruby виглядає наступним чином:
У цьому прикладі method_name - це назва методу, а argument1, argument2 та інші - це аргументи, які метод приймає.
Ім'я методу може складатися з будь-якої комбінації букв, цифр та символів "_". Список параметрів може бути порожнім або містити один або більше параметрів, розділених комою. Тіло методу містить код, який виконується при виклику методу.
Метод може бути викликаний за його ім'ям з передачею аргументів, які потрібні для виконання методу. Синтаксис виклику методу має наступний вигляд:
Приклад:
У цьому прикладі ми створили метод з ім'ям "sum", який приймає два параметри "a" та "b" і повертає їхню суму. Далі ми викликаємо метод "sum" з аргументами "3" та "4" і зберігаємо результат в змінну "result". Нарешті, ми виводимо результат на екран.
Методи можуть повертати значення. Значення, що повертається з методу, - це останнє значення в останньому виразі методу. Якщо значення не повертається явно, метод поверне nil.
Методи класу виконуються в контексті класу. Вони використовуються для зміни поведінки класу або виконання дій, що пов'язані з класом. Щоб визначити метод класу, використовується ключове слово self.
Цей метод можна викликати без створення екземпляру класу:
Ще раз. Методи класу в Ruby - це методи, які визначаються для класу, а не для його екземплярів. Це означає, що вони можуть бути викликані без створення екземпляра класу.
У цьому прикладі ми визначаємо метод count для класу Person, який повертає кількість створених екземплярів класу Person. Цей метод можна викликати без створення екземпляра Person, наприклад:
Методи екземпляра - це фрагменти коду, що виконуються на конкретному екземплярі класу. Вони викликаються через "." після змінної, що містить екземпляр класу, і можуть бути використані для отримання/зміни даних цього екземпляру.
Наприклад, у класі "Person" може бути метод "age", що повертає вік конкретного екземпляру цього класу:
У цьому прикладі, метод "age" повертає вік екземпляру "person1". Він є методом екземпляру класу "Person" і може бути викликаний лише на об'єктах цього класу.
Методи екземпляра виконуються в контексті екземпляру класу. Вони використовуються для зміни поведінки конкретного екземпляру класу.
Щоб викликати метод екземпляра, потрібно створити екземпляр класу та викликати метод на цьому екземплярі:
Метод може приймати параметри, які передаються під час виклику методу. Параметри передаються як аргументи, розділені комами, у вигляді списка.
У цьому прикладі ми створили метод "greet", який приймає параметр "name" та виводить на екран рядок зі словом "Hello" та ім'ям, переданим у параметрі. Під час виклику методу ми передаємо рядок "Mike" як параметр.
Метод може мати багато параметрів. Якщо в метод передається менше або ж більше аргументів, то буде помилка ArgumentError
Методи - це важлива частина будь-якої програми на Ruby. Вони дозволяють використовувати один і той же код багато разів та роблять програму більш структурованою та легко зрозумілою. Використовуючи методи, програміст може писати більш складні програми, зменшуючи кількість дубльованого коду.
Файли та IO (введення/виведення) в Ruby дозволяють взаємодіяти з файловою системою та обмінюватися даними з зовнішніми джерелами. Файловий ввід-вивід забезпечується класом File та деякими методами, що виконують операції з файлами.
Отже, щоб прочитати з файлу, спочатку потрібно відкрити його:
Другим аргументом є режим відкриття файлу. r означає, що файл відкритий для читання. Також є режими для запису w та додавання a.
Можна використовувати блок для автоматичного закриття файлу:
Тут метод read читає весь вміст файлу та виводить його на екран.
Для запису в файл використовується метод write:
Це створить або перезапише файл example.txt з вмістом "Hello, world!".
Щоб додати до файлу, потрібно відкрити файл у режимі a та використати метод puts:
Це додасть рядок "Hello again, world!" в кінець файлу example.txt.
Щоб перейти на іншу позицію у файлі, можна використовувати метод seek:
Це виведе на екран два наступні байти після шостого у файлі.
Якщо ви все ж таки відкриваєте файл без блоку,
то його потрібно буде закрити, коли ви завершете працювати з ним
Отже, у Ruby є потужний і зручний набір інструментів для роботи з файлами та введенням/виведенням даних (IO). Всі файли у Ruby є об'єктами класу File, що дозволяє працювати з ними за допомогою методів екземпляру цього класу. Можна зчитувати, записувати, додавати вміст до файлів, керувати їхніми атрибутами і багато іншого.
Крім того, Ruby має декілька об'єктів, які представляють різні потоки введення/виведення даних, такі як $stdin, $stdout та $stderr. Вони можуть бути використані для зчитування введення користувача, виводу повідомлень про помилки та іншого. Ruby також має кілька класів, що дозволяють працювати з мережевими з'єднаннями, такі як TCPSocket та UDPSocket.
Загалом, Ruby має велику кількість інструментів для роботи з файлами та введенням/виведенням даних, що робить його потужним інструментом для розробки програмного забезпечення, яке використовує ввод/вивід даних та роботу з файлами.
P.S. Продовження згодом
Група в телеграмі: https://t.me/ruby4you
Автор курсу: Шкоропад Даниїл