Ruby
Ruby — це інтерпретована, повністю об'єктно-орієнтована мова програмування зі строгою динамічною типізацією. Ruby поєднує в собі Perl-подібний синтаксис із об'єктно-орієнтованим підходом мови програмування Smalltalk. Також деякі риси запозичено із мов програмування Python, Lisp, Dylan та CLU.
ВстановленняРедагувати
- Виконуємо інструкції на офіційній сторінці
- Читаємо далі, як перевірити чи все працює.
Привіт світе!Редагувати
Створюємо файл hello.rb
, в якому пишемо:
print "Привіт, світе!\n"
І виконуємо його:
ruby hello.rb
Як інший варіант - запускаємо інтерпретатор irb
,
Частини мовиРедагувати
Мова в сенсі МоваРедагувати
Язик не повернеться назвати Ruby мовою програмування. Це означатиме що мова створена для ком'ютера. Що ми, кодери, є чужинцями, які шукають громадянства в комп'ютерному краю. Що це комп'ютерна мова, а ми перекладачі для світу.
Але як ви називаєте мову, коли починаєте на ній думати?
Це матиме на увазі, що мова працює перш за все в термінах комп'ютера. Коли починаєш використовувати слова та звороти мови щоб виразити себе. Комп'ютери не можуть виражати себе. Тому як це може бути комп'ютерна мова? Вона наша, ми можемо спілкуватись нею як рідною. Ми не можемо більше чесно називати її мовою програмування. Це кодерська мова. Це мова наших думок.
Прочитайте наступне речення вголос:
5.times { print "Odelay!" }
В реченнях англійською пунктуація (крапки, дужки, лапки) не читається. Пунктуація додає значення до слів, допомагає краще зрозуміти що хотів сказати автор. Тому речення вище можна прочитати як Five times print "Odelay!". Що означає "П'ять разів надрукуй "Odelay!"", що й робить ця програма.
Прочитайте наступне речення вголос:
exit unless "restaurant".include? "aura"
Тут відбуваються деякі перевірки. Наша програма зробить exit (вихід (тобто завершиться)), unless (якщо тільки) "restaurant" (слово) include? (не включає) "aura" (інше слово). Тобто англійською "Exit unless the word restaurant includes the word aura.". Ви коли небудь бачили мову, яка б так ефективно використовувала знак запитання? Ruby використовує деяку пунктуацію таку як знаки оклику та запитання, щоб покращити читабельність коду. Ми задаємо питання в реченні вище, то чому б не зробити це очевидним?
Прочитайте наступне речення вголос:
['toast', 'cheese', 'wine'].each { |food| print food.capitalize }
І хоча ця частина коду вже не така читабельна і не так схожа на речення, як попередні, все одно прочитайте в голос. Хоча іноді Рубі читається як англійська, часом вона читається як скорочена англійська. Якщо повністю перекласти на англійську попереднє речення, вийде "With the words ‘toast’, ‘cheese’, and ‘wine’: take each food and print it capitalized." Комп'ютер чемно відповість: "Toast, Cheese та Wine".
Вас вже напевне цікавить, що означають крапки та дужки. Тому переходимо до вивчення частин мови.
КоментаріРедагувати
Коментарі, як це і прийнято призначені лише для людей, і комп'ютером ігноруються. І як прийнято в скриптових мовах, в Рубі коментарі йдуть від символа #, до кінця рядка:
# це коментар
ЗмінніРедагувати
Змінною може бути будь-яка послідовність букв, цифр та символу підкреслювання що починається з маленької букви. Наприклад:
x, y, banana2 чи phone_a_quail
ЧислаРедагувати
Найпростішим видом числа є ціле - послідовність цифр, яка може починатись знаком плюс чи мінус. Наприклад:
1, 23, чи -10000
Всередині чисел не дозволені коми, зате дозволені символи підкреслювання. Тому якщо ви хочете виділити тисячі, щоб зробити числа більш читабельними, можете написати так:
population = 12_000_000_000
Десяткові дроби в програмуванні називаються числами з плаваючою крапкою. Вони складаються з чисел з крапкою щоб відділити цілу частину від дробової, чи чисел в експоненційному форматі. Наприклад:
3.14, -808.08 чи 12.043e-04
РядкиРедагувати
Рядки - це будь-які символи (літери, цифри, розділові знаки) взяті в лапки. Можна використовувати як подвійні ("), так і одинарні (') лапки. Наприклад:
"sealab", '2021', чи "These cartoons are hilarious!"
СимволиРедагувати
Символи - це слова, які виглядають майже як змінні. Нагадаємо, що вони можуть містити букви, цифри, чи символи підкреслювання. Але вони починаються з двокрапки. Наприклад:
:a, :b, or :ponce_de_leon
Символи - це полегшені рядки. Зазвичай вони використовуються в ситуаціях де ви використали б рядок не для друку на екран.
КонстантиРедагувати
Константи це такі ж слова як і змінні, але починаються з великої літери. Якщо вважати змінні іменниками Рубі, то константи - власні назви.
МетодиРедагувати
Якщо змінні та константи є іменниками, то методи - дієслова. Методи зазвичай приєднуються до змінної чи константи символом крапки. Ви вже бачили як працюють методи:
front_door.open
В прикладі вище, open - метод. Методи можна застосовувати цілими серіями:
front_door.open.close
Вище ми наказали комп'ютеру відкрити передні двері, і одразу ж закрити їх. Наступний приклад - теж метод:
front_door.is_open?
Він наказує комп'ютеру перевірити чи двері відкриті. В іменах методів можна використовувати як знак запитання, так і знак оклику.
Аргументи методівРедагувати
Методи можуть потребувати додаткової інформації для свого виконання. Якщо ми захочемо змусити комп'ютер зафарбувати двері, ми повинні сказати в який колір. Аргументи додаються в кінець методу, і зазвичай оточені дужками, і розділені комами.
front_door.paint( 3, :red )
Приклад вище зафарбовує двері трьома шарами червоної фарби.
Методи з аргументами теж можна застосовувати серіями
front_door.paint( 3, :red ).dry( 30 ).close()
Хоча останній метод не має аргументів, ми все одно можемо написати дужки, якщо нам так більше подобається.
Ядерні методиРедагувати
Деякі методи (такі як print) є методами ядра Рубі. Їх всюди використовують. Через те що вони дуже поширені, не обов'язково ставити перед ними крапку:
print "Бачите, без крапки."
Методи класуРедагувати
Як і методи описані вище (їх називають методами екземплярів), методи класу зазвичай приєднуюються після змінних і констант. Замість крапки використовують дві двокрапки:
Door::new( :oak )
Метод класу new
, який ми бачимо вище використовується для створення екземпляру класу. В прикладі вище, ми просимо Рубі створити нам нові дубові двері. Звісно Рубі до того повинні були пояснити як це робиться.
Глобальні змінніРедагувати
Змінні що починаються символом долара є глобальними. Наприклад:
$x, $1, $chunky чи $CHunKY_bACOn
Змінні екземплярів (атрибути)Редагувати
Змінні що починаються з символа "at" (@) є змінними екземплярів. Наприклад:
@x, @y, чи @cut_of_bacon
Ці змінні часто використовуються щоб описати атрибути чого-небудь. Наприклад можна описати ширину дверей, встановивши значення змінної @width, всередині об'єкта front_door. Можна вважати, що символ "at" означає "attribute".
Змінні класуРедагувати
Змінні класу починаються двома собаками (@). Наприклад:
@@x, @@y, чи @@chunky_bacon
Змінні класу також задають атрибути. Але не для окремого об'єкта, а для всіх об'єктів класу. Можна вважати що @@ означає "attribute all".
БлокиРедагувати
Будь-який код що оточений фігурними дужками - це блок:
2.times { print "Це блооок!" }
Замість фігурних дужок можна використати слова do
та end
.
Аргументи блокуРедагувати
Аргументи блоку - це набір змінних оточених символами вертикальної риски і розділені комами. Наприклад:
|x|, |x,y|, та |up, down, all_around|
Аргументи блоку використовуються на початку блоку. Наприклад:
{ |x,y| x + y }
В цьому прикладі, аргументи - |x,y|
. Після аргуменітв йде код.
ІнтервалиРедагувати
Інтервал - це два значення в круглих дужках, які розділені двома, чи трьома крапками. (1..9)
- це інтервал що містить всі цифри від одного до 9. ('a'..'z')
- це інтервал що містить всі маленькі латинські літери.
Зазвичай використовуються лише дві крапки. Якщо додають третю крапку, останнє значення інтервала не включається. (0...5)
задає всі цифри від 0 до 4.
МасивиРедагувати
Масив - це розділений комами список елементів поміщений в квадратні дужки. Наприклад:
[1, 2, 3] ['coat', 'mittens', 'snowboard'] [1,"two", [3,4]]
ХешіРедагувати
Хеш - це словник, оточений фігурними дужками. Словники співставляють слова з їх означеннями. Рубі робить це за допомогою стрілок:
{'a' => 'aardvark', 'b' => 'badger'}
Регулярні виразиРедагувати
Регулярний вираз - це послідовність символів оточених слешами. Наприклад:
/ruby/, /[0-9]+/ чи /^\d{3}-\d{3}-\d{4}/
ОператориРедагувати
Наступні оператори використовуються в Рубі для виконання математичних операцій та порівнянь.
** ! ~ * / % + - & << >> | ^ > >= < <= <=> || != =~ !~ && += -= == === .. ... not and or
Ключові словаРедагувати
Рубі також має набір ключових слів, які не можна використовувати як імена змінних. Як тільки ви спробуєте використати їх не за призначенням - отримаєте синтаксичну помилку. Деякі з них ми вже бачили, деякі ще ні:
alias and BEGIN begin break case class def defined do else elsif END end ensure false for if in module next nil not or redo rescue retry return self super then true undef unless until when while yield