|
- Автор: Hiran Ramankutty, 01/2003. Перевод: Андрей Киселев. Источник - Linux Gazette -
Ruby представляет собой объектно-ориентированный язык
программирования интерпретирующего типа. Он был создан
программистом из Японии - Юкихиро Матсумото (Yukihiro Matsumoto),
где этот язык пользуется большей популярностью нежели Python или
Perl!
Я не собираюсь превозносить язык Ruby и доказывать его
преимущества перед другими языками программирования. Большинство из
нас прекрасно понимают, что каждый язык программирования имеет свои
неповторимые черты. И ваш выбор скорее будет зависеть от ваших
личных предпочтений и доступности стандартных библиотек, нежели от
неких таинственных технических проблем.
Требования
Я полагаю, что вы работаете в Linux и Ruby уже установлен у вас.
Ruby - это свободно распространяемое программное обеспечение и
поэтому нет никаких препятствий, ограничивающих его использование.
Вы можете скачать его с домашней странички проекта Ruby
Hello World
Начнем с обычной в таких случаях программы Hello,
World'
% cat > hello.rb
print "Hello World
"
^D
% ruby hello.rb
Hello World
%
Переменные
Имена переменных должны начинаться с символа:
$ глобальная переменная
@ переменная экземпляра (поле объекта, данные-член)
a-z или '_' локальная переменная
A-Z константа
Кроме того существуют еще две псевдопеременные, которые являются
исключением из вышеуказанного правила - это self' и
nil'.
- self -- представляет собой ссылку на текущий исполняемый
объект
- nil -- не имеет значения, FALSE или значение
неинициализированной переменной
Обе они именуются как локальные переменные, но таковыми не
являются! Реальный смысл этих переменных станет вам понятен немного
позже.
Глобальные переменные
Имена глобальных переменных должны начинаться с символа $'.
Глобальные переменные доступны из любой части программы. Следует
отметить, что неинициализированная глобальная переменная имеет
значение 'nil'. Этот факт демонстрирует следующий
пример:
% ruby
print $foo,"
"
$foo = 5
print $foo,"
"
^D
%
Результат работы интерпретатора:
nil
5
Эта особенность дает возможность связывать' процедуры с
глобальными переменными, т.е. при изменении значения переменной
связанная' процедура будет вызываться автоматически. Но об
этом позже!
Существует ряд специальных предопределенных глобальных
переменных, являющихся по сути системными переменными
интерпретатора Ruby (доступны только для чтения). Некоторые из них
приведены ниже.
- $! последнее сообщение об ошибке
- $@ место возникновения ошибки
- $_ последняя строка, считанная вызовом gets
- $. номер последней строки, прочитанной
интерпретатором
- $& Найденная подстрока в последнем поиске по
шаблону.
- $~ результат последнего поиска по шаблону в виде массива
подвыражений
- $n N-ное подвыражение из массива - результата последнего
поиска по шаблону (то же самое, что и $~[n])
- $= флаг чувствительности к регистру
- $0 имя файла программы
- $* аргументы командной строки
- $$ ID процесса интерпретатора
- $? статус завершения последнего дочернего процесса
Локальные переменные
Имена локальных переменных должны начинаться с прописных
(маленьких) символов латинского алфавита или с символа '_'.
В отличие от глобальных переменных и ссылок на переменные,
локальные переменные не принимают значение 'nil', например,
при выполнении следующего кода:
% ruby
print foo
^D
Вы получите сообщение об ошибке:
"undefined local variable or method 'foo' for #(object...)".
Область видимости локальных переменных ограничивается одной из
следующих разновидностей блоков программы
- proc {....}
- loop {....}
- def .... end
- class .... end
- module .... end
- вся программа (если не выполняется ни один из вышеуказанных
случаев)
Локальная переменная, инициализированная в каком либо блоке (или
процедуре), после выхода за пределы блока становится
неопределенной. Например:
def foo(n)
k = 2 * n
print "
",k,"
"
print defined? k,"
"
end
foo 3
print defined? k,"
"
^D
Вывод интерпретатора:
6
local-variable
nil
В этом примере оператор defined?' используется для проверки
существования передаваемого ему аргумента. Результаты работы
оператора "local-variable" и "nil" понятны и так
и в комментариях не нуждаются.
Константы
Имена констант начинаются с заглавных (больших) символов
латинского алфавита. Но, как правило, программирующие на Ruby, дают
константам имена, состоящие только из заглавных символов. Так,
например и 'Foo', и 'FOO' являются константами. Как
и в случае с локальными переменными, константы инициализируются
оператором присваивания, а обращение к неинициализированной
константе, равно как и попытка изменения инициализированной
константы, вызывает сообщение об ошибке. Проверьте это
самостоятельно.
Строки
Строки в Ruby ограничиваются либо одинарными ('...'),
либо двойными кавычками ("..."). Однако такие строки
имеют различия между собой. При использовании двойных кавычек
допускается вставлять в строки управляющие
escape-последовательности, начинающиеся с символа '', а
также вычислять выражения с помощью конструкции #{}. Например:
print "
"
print '
'
print " |