Выбрать главу
Базовые типы

Массив (Array) в Ruby – это набор (коллекция, множество) произвольных объектов (см. таблицу A.3).

Таблица A.3. Примеры массивов

Выражение Значение Комментарий
[] [] пустой массив
[0] [0] массив из одного элемента – числа 0
[1, 2.3, "Ruby"] [1, 2.3, "Ruby"] массив из трёх элементов
[[1,2],[3]] [[1, 2], [3]] массив из двух массивов
%w(Где ёж?) "Где [ёж?"] способ создания массива строк
%w(Где\ же он?) %w[Где же "он?"] экранирование пробела
%W(2 3 #{2*3}) ["2", "3", "6"] подстановка значения выражения

Диапазон (Range) – последовательность объектов, которая включает (для e1..e2) или не включает (для e1...e2) в себя элемент e2. Используемый в качестве итератора диапазон передаёт в блок все свои элементы (как при вызове метода to_a, преобразующего диапазон в массив).

Таблица A.4. Примеры диапазонов

Диапазон Соответствующий ему массив
1..9 [1, 2, 3, 4, 5, 6, 7, 8, 9]
1 1 0 [1, 2, 3,4, 5, 6, 7, 8, 9]
3.. 1 []
’d’..’n’ ["d", "e", "g", "h", "i", "j", "k", "l", "m", "n"]

Хэш (Hash) – это набор пар ключ—значение. Хэш схож с массивом, за исключением одной особенности – индексация производится с помощью объектов любых типов, кроме integer. Причем порядок обхода элементов не зависит от порядка вставки.

Примеры хэшей приведены ниже:

Таблица A.5. Примеры хэшей

Выражение Значение Комментарий
Hash["3 О 2, "b" 1 a"] {"a"=>1, "b"=>2,"c"=>3} хэш из трех элементов
Hash["a" => 1, "b" => 2] {"a"1 => 1, "b" => 2} хэш из двух элементов
{"a"> 1}= {"a"=> 100} хэш из одного элемента

Как видно из примера, для создания хэша часто используются литералы key => value. Ключ и значения находятся в паре, поэтому число аргументов должно быть четным.

Хэши имеют значение по умолчанию. Это значение возвращается каким-либо итератором при попытке обращения к ключу, не существующему в хэше. И этим значением является nil.

Регулярные выражения (объекты класса Regexp) используются для подбора шаблона строки. Для создания регулярных выражений нужно использовать литералы /…/ или %r…, а также конструктор Regexp.new. Отметим, что разные версии Руби используют разные средства для работы с регулярными выражениями.

При создании регулярных выражений могут идти следующие параметры:

Таблица A.6.

Параметр Значение
/…/i не различать регистр
/…/x игнорировать пробелы и переводы строк
/…/s считать регулярное выражение

С помощью регулярных выражений можно:

• Проверять, соответствует ли вся строка целиком заданному шаблону.

• Находить в строке подстроки, удовлетворяющие заданному шаблону.

• Извлекать из строки подстроки, соответствующие заданному шаблону.

• Изменять в строке подстроки, соответствующие шаблону.

Примеры использования регулярных выражений приведены в таблице А7.

Таблица A.7.

Параметр Значение
/Abc/ совпадет только со словом ’Abc’
/Abc/i совпадет со словами ’ABC’, ’abc’, ’Abc’ и т.д.
/abc/ совпадет с ’abc’, ’abc cba’
/abc.*def/s совпадет с ’abckghfdkdef’

Каждый символ регулярного выражения последовательно сравнивается с проверяемой строкой. Все, что не является указанными ниже спецсимволами или операторами, воспринимается, как обычный символ, рассматриваемый на простое совпадение.

A.2 Термы и выражения.