Массив (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’ |
Каждый символ регулярного выражения последовательно сравнивается с проверяемой строкой. Все, что не является указанными ниже спецсимволами или операторами, воспринимается, как обычный символ, рассматриваемый на простое совпадение.