Ако погледнем по-отблизо нашата нова програма, ще забележим, че присъства ред, който започва с #. В Ruby всичко, което започва с # е коментар и не се интерпретира. Конкретно в нашия пример се ползва специален случай, който показва как да бъде стартиран файла под UNIX-подобни операционни системи.
Въведохме известна промяна в метода say_hi
:
В горния пример правим проверка на параметъра @names
за да вземем
решение. Ако е nil, отпечатваме три точки.
Цикли, познати като итерации
Ако обектът @names
отговаря на each
, би следвало да можем да минем
през всеки един от неговите елементи и да отпечатаме неговата стойност.
Ако това не стане, просто превръщаме обекта в низ и отпечатваме
стандартния поздрав.
Нека разгледаме итератора от близо:
Методът each
приема блок с код, който се изпълнява за всеки елемент от
списъка, бит по бит, между ключовите думи do
и end. Блокът е като
анонимната функция @lambda
. Променливата между вертикалните черти е
параметъра за този блок.
В повечето езици за програмиране се ползва цикъл като for
за обхождане
на списъка, като това става на C по следния начин:
Този вариант работи, но не е най-елегантното решение. Имаме нужда от
променлива i, големината на списъка и описание на начина на обхождане. В
Ruby това става много елегантно, като всички детайли са скрити в метода
each
. Вътрешната реализация на този метод просто извиква yield
"Albert"
, след това yield "Brenda"
и накрая yield "Charles"
Блокът, блясъкът на Ruby
Истинската мощ на блоковете може да видим в обработката на сложни списъци.
Методът say_bye
не използва each
, а вместо това прави проверка дали
@names
отговаря на метода join
и при положителен резултат го ползва.
При отрицателен резултат просто отпечатва променливата като низ. Този
метод не се интересува от типа на променливата, а се уповава на
методите, на които отговаря, като това е познато като “Duck Typing” –
“ако ходи като патица и кряка като патица, би трябвало да е патица”. По
този начин не сме ограничени от типа на променливите. Ако някой друг
напише подобен клас, единственото нещо, което трябва да присъства е
имплементацията на метода join
за да може всичко да работи правилно.
Стартиране на скрипта
Ползваме един последен трик за стартиране на скрипта:
__FILE__
е специална променлива, която съдържа името на настоящия
файл, а $0
представлява името на файла, нужен за стартирането на
програмата. Тази проверка има следното значение: “Ако това е главния
изпълним файл …”. Това ни позволява да ползваме скрипта като
библиотека.
Вместо край на ръководството
Тук приключва краткото въведение в Ruby. Надяваме се това да Ви е запалило да научите и използвате този прекрасен език. Ако това е така, можете да прегледате раздела Документация , където ще намерите връзки към напълно безплатни самоучители и ръководства.