1.2.3. Константы, переменные и типы

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. Все массивы динамические, задавать размер при создании не нужно.

Поскольку массивы строк встречаются очень часто (а набирать их неудобно), для них предусмотрен специальный синтаксис:

%w[alpha beta gamma delta]

%w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)

%w/am is are was were be being been/

Здесь не нужны ни кавычки, ни запятые; элементы разделяются пробелами. Если встречаются элементы, содержащие внутренние пробелы, такой синтаксис, конечно, неприменим.

Для доступа к конкретному элементу массива по индексу применяются квадратные скобки. Результирующее выражение можно получить или выполнить для него присваивание:

val = myarray[0]

print stats[j]

x[i] = x[i+1]

Еще одна «могучая» конструкция в Ruby — это хэш. Его также называют ассоциативным массивом или словарем. Хэш — это множество пар данных; обыкновенно он применяется в качестве справочной таблицы или как обобщенный массив, в котором индекс не обязан быть целым числом. Все хэши являются экземплярами класса Hash.

Хэш-константа, как правило, заключается в фигурные скобки, а ключи отделяются от значений символом =>. Ключ можно считать индексом для доступа к ассоциированному с ним значению. На типы ключей и значений не налагается никаких ограничений. Примеры:

{1=>1, 2=>4, 3=>9, 4=>16, 5 = >25, 6=>36}

{"cat"=>"cats", "ox"=>"oxen", "bacterium"=>"bacteria"}

{"водород"=>1, "гелий"=>2, "углерод"=>12}

{"нечетные"=>[1,3,5,7], "четные"=>[2,4,6,8]}

{"foo"=>123, [4,5,6]=>"my array", "867-5309"=>"Jenny"}

К содержимому хэша-переменной доступ осуществляется так же, как для массивов, — с помощью квадратных скобок:

print phone_numbers["Jenny"]

plurals["octopus"] = "octopi"

Однако следует подчеркнуть, что у массивов и хэшей много методов, именно они и делают эти контейнеры полезными. Ниже, в разделе «ООП в Ruby», мы раскроем эту тему более подробно.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2.4 Константы

Из книги C++ автора Хилл Мюррей

2.4 Константы С++ дает возможность записи значений основных типов: символьных констант, целых констант и констант с плавающей точкой. Кроме того, ноль (0) может использоваться как константа любого указательного типа, и символьные строки являются константами типа char[]. Можно


6.4 Константы

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

6.4 Константы Константы классового типа определить невозможно в том смысле, в каком 1.2 и 12e являются константами типа double. Вместо них, однако, часто можно использовать константы осноных типов, если их реализация обеспечивается с помощью фунций членов. Общий аппарат для


2.4 Константы

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

2.4 Константы Как описано ниже, есть несколько видов констант. В #2.6 приводится краткая сводка аппаратных характеристик, которые влияют на их


Типы, характеризуемые значениями, ссылочные типы и оператор присваивания

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович

Типы, характеризуемые значениями, ссылочные типы и оператор присваивания Теперь изучите следующий метод Main() и рассмотрите его вывод, показанный на рис. 3.12.static void Main(string[] args) { Console.WriteLine("*** Типы, характеризуемые значением / Ссылочные типы ***"); Console.WriteLine(-› Создание p1"); MyPoint


Типы, характеризуемые значениями и содержащие ссылочные типы

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Типы, характеризуемые значениями и содержащие ссылочные типы Теперь, когда вы чувствуете разницу между типами, характеризуемыми значением, и ссылочными типами, давайте рассмотрим более сложный пример. Предположим, что имеется следующий ссылочный тип (класс),


Типы, характеризуемые значениями, и ссылочные типы: заключительные замечания

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Типы, характеризуемые значениями, и ссылочные типы: заключительные замечания Чтобы завершить обсуждение данной темы, изучите информацию табл. 3.8, в которой приводится краткая сводка основных отличий между типами, характеризуемыми значением, и ссылочными типами.Таблица


Константы

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

Константы Константа — это именованное фиксированное значение. Для объявления констант используют конструкцию вида: const имя_константы = значение;Например:const Factor = 1.756;Тип константы определяется автоматически по присвоенному ей


Константы

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Константы В Си++ существует удобное средство определения констант. Если в Си вы должны были пользоваться директивой препроцессора #define, то теперь введено новое ключевое слово const, позволяющее создавать константы. Преимущество в использовании ключевого слова const перед


Константы

Из книги Язык Си - руководство для начинающих автора Прата Стивен

Константы Пользовательские константы в VBScript объявляются с помощью ключевого слова Const, например:Const MyConst="Это моя константа"Кроме этого, VBScript поддерживает много встроенных именованных констант (их не нужно дополнительно объявлять в сценарии), применение которых упрощает


Функции и переменные. Локальные переменные

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

Функции и переменные. Локальные переменные Объявленные ранее функции создают внутри своего тела собственные переменные. Это так называемые локальные переменные. Такие переменные доступны только внутри тела функции, в котором они объявлены. При завершении выполнения


Функции и переменные. Локальные переменные

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Функции и переменные. Локальные переменные Объявленные ранее функции создают внутри своего тела собственные переменные. Это так называемые локальные переменные. Такие переменные доступны только внутри тела функции, в котором они объявлены. При завершении выполнения


Константы

Из книги автора

Константы Константа — это число, символ или строка символов. Константы используются в программе для задания постоянных величин. В языке Си различают четыре типа констант: целые, с плавающей точкой, символьные константы и символьные


ДАННЫЕ: ПЕРЕМЕННЫЕ И КОНСТАНТЫ

Из книги автора

ДАННЫЕ: ПЕРЕМЕННЫЕ И КОНСТАНТЫ Компьютер, выполняя программу, может заниматься разнообразной деятельностью. Он может складывать числа, сортировать имена, заниматься распознаванием речи и изображения на экране видеодисплея, вычислять орбиты комет, подготавливать


11.2. Переменные и типы данных

Из книги автора

11.2. Переменные и типы данных Во время интерпретации сценария браузер разбивает код на отдельные слова, фразы или символы, которые умеет распознавать. Эти элементы называются лексемами. В языке JavaScript лексемы делятся на четыре типа: идентификаторы, ключевые слова, литералы


Стандартные константы и переменные

Из книги автора

Стандартные константы и переменные Константы MaxShortInt = shortint.MaxValue; Максимальное значение типа shortint MaxByte = byte.MaxValue; Максимальное значение типа byte MaxSmallInt = smallint.MaxValue; Максимальное значение типа smallint MaxWord = word.MaxValue; Максимальное значение типа word MaxInt =


Типы и переменные модуля GraphABC

Из книги автора

Типы и переменные модуля GraphABC Color = System.Drawing.Color; Тип цвета Point = System.Drawing.Point; Тип точки GraphABCException = class(Exception) end; Тип исключения GraphABC RedrawProc: procedure; Процедурная переменная перерисовки графического окна. Если равна nil, то используется стандартная