Філософія Ruby, яка передбачає розгляд кожної одиниці як об'єкта, є однією з причин, чому ця мова вважається такою елегантною і потужною. Ruby — це чисто об'єктно-орієнтована мова. Від чисел до класів, навіть блоки коду, все в Ruby розглядається як об'єкт, і саме тому її вважають повністю об'єктно-орієнтованою мовою. У Ruby всі значення є об'єктами, які мають властивості та методи.
- Числа — це об'єкти: У Ruby, коли ви створюєте число, це не просто просте значення, як в багатьох інших мовах. Натомість це число розглядається як об'єкт — екземпляр класу
Integer
.
- Рядки — це об'єкти: Як і числа, рядки також є об'єктами. Ви можете розглядати рядок як об'єкт і викликати методи для його маніпуляції.
- True, False і Nil — це об'єкти: У Ruby навіть константи true, false і nil є об'єктами. Це екземпляри спеціальних класів, і, як будь-які інші об'єкти, вони можуть реагувати на методи:
4. Класи та модулі — це об'єкти: У Ruby навіть класи та модулі є об'єктами! Це фундаментальний аспект можливостей метапрограмування Ruby.
Блоки в Ruby:
Блоки не є об'єктами, але їх можна перетворити на об'єкти за допомогою Proc та Lambda: У Ruby блоки не є об'єктами самі по собі, але якщо ви хочете розглядати їх як об'єкти, ви можете перетворити їх на об'єкти Proc або Lambda. І Proc, і Lambda є способами захоплення блоку коду і розглядання його як об'єкта, якого можна передавати та виконувати пізніше, як будь-який інший об'єкт.
Висновок:
Підхід Ruby, за якого все розглядається як об'єкт, робить мову не лише потужною, але й елегантно простою. Розглядаючи все — від чисел до рядків і навіть блоків коду — як об'єкти, Ruby надає вам можливість працювати з будь-яким значенням однаково, викликаючи методи і маніпулюючи даними без особливих зусиль.
Будь то числа, значення true/false або навіть цілих класи, Ruby дає вам інструменти для того, щоб розглядати все як об'єкти. І якщо вам потрібно захопити блок коду, Ruby дає вам можливість перетворити його на Proc або Lambda, перетворюючи на об'єкт, який можна передавати і виконувати коли завгодно.
Отже, наступного разу, коли ви писатимете код на Ruby, пам'ятайте: ви працюєте у світі об'єктів, де все пов'язано і можливе все!
Перекладено з: “The Heart of Ruby: Why Everything is an Object”