Имена переменных и других идентификаторов обычно начинаются с буквы или специального модификатора. Основные правила таковы:
• имена локальных переменных (и таких псевдопеременных, как self
и nil
) начинаются со строчной буквы или знака подчеркивания _
;
• имена глобальных переменных начинаются со знака доллара $
;
• имена переменных экземпляра (принадлежащих объекту) начинаются со знака «собачки» @
;
• имена переменных класса (принадлежащих классу) предваряются двумя знаками @
(@@
);
• имена констант начинаются с прописной буквы;
• в именах идентификаторов знак подчеркивания _ можно использовать наравне со строчными буквами;
• имена специальных переменных, начинающиеся со знака доллара (например, $1
и $/
), здесь не рассматриваются.
Примеры:
• локальные переменные alpha
, _ident
, some_var
;
• псевдопеременные self
, nil
, __FILE__
;
• константы K6chip
, Length
, LENGTH
;
• переменные экземпляра @foobar
, @thx1138
, @not_const
;
• переменные класса @@phydeaux
, @@my_var
, @@not_const
;
• глобальные переменные $beta
, $B2vitamin
, $not_const
.
1.2.2. Комментарии и встроенная документация
Комментарии в Ruby начинаются со знака решетки (#
), находящегося вне строки или символьной константы, и продолжаются до конца строки:
x = y + 5 # Это комментарий.
# Это тоже комментарий.
print "# А это не комментарий."
Предполагается, что встроенная документация будет извлечена из программы каким-нибудь внешним инструментом. С точки зрения интерпретатора это обычный комментарий. Весь текст, расположенный между строками, которые начинаются с лексем =begin
и =end
(включительно), игнорируется интерпретатором (этим лексемам не должны предшествовать пробелы).
=begin
Назначение этой программы - излечить рак
и установить мир во всем мире.
=end
1.2.3. Константы, переменные и типы
В Ruby переменные не имеют типа, однако объекты, на которые переменные ссылаются, тип имеют. Простейшие типы — это символ, число и строка.
Числовые константы интуитивно наиболее понятны, равно как и строки. В общем случае строка, заключенная в двойные кавычки, допускает интерполяцию выражений, а заключенная в одиночные кавычки интерпретируется почти буквально — в ней распознается только экранированная обратная косая черта.
Ниже показана «интерполяция» переменных и выражений в строку, заключенную в двойные кавычки:
а = 3
b = 79
puts "#{а} умноженное на #{b} = #{а*b}" # 3 умноженное на 79 = 237
Более подробная информация о литералах (числах, строках, регулярных выражениях и т.п.) приведена в следующих главах.
Стоит упомянуть особую разновидность строк, которая полезна прежде всего в небольших сценариях, применяемых для объединения более крупных программ. Строка, выводимая программой, посылается операционной системе в качестве подлежащей исполнению команды, а затем результат выполненной команды подставляется обратно в строку. В простейшей форме для этого применяются строки, заключенные в обратные кавычки. В более сложном варианте используется синтаксическая конструкция %x
:
`whoami`
`ls -l`
%x[grep -i meta *.html | wc -l]
Регулярные выражения в Ruby похожи на символьные строки, но используются по-другому. Обычно в качестве ограничителя выступает символ косой черты.
Синтаксис регулярных выражений в Ruby и Perl имеет много общего. Подробнее о регулярных выражениях см. главу 3.
Массивы в Ruby — очень мощная конструкция; они могут содержать данные любого типа. Более того, в одном массиве можно хранить данные разных типов. В главе 8 мы увидим, что все массивы — это экземпляры класса Array
, а потому к ним применимы разнообразные методы. Массив-константа заключается в квадратные скобки. Примеры:
[1, 2, 3]
[1, 2, "застегни мне молнию на сапоге"]
[1, 2, [3,4], 5]
["alpha", "beta", "gamma", "delta"]
Во втором примере показан массив, содержащий целые числа и строки. В третьем примере мы видим вложенный массив, а в четвертом - массив строк. Как и в большинстве других языков, нумерация элементов массива начинается с нуля. Так, в последнем из показанных выше примеров элемент "gamma"
имеет индекс 2. Все массивы динамические, задавать размер при создании не нужно.