PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 116


fanested =  ('this  ,   'that  ,   "the",     order'), ©nested = ("this',   "that",   ('the',   'order')),

Почему Perl не поддерживает вложенные списки напрямую? Отчасти по истори­ческим причинам, но также и потому, что это позволяет многим операциям (типа print или sort) работать со списками произвольной длины и произвольного содержания.

Что делать, если требуется более сложная структура данных — например, мас­сив массивов или массив хэшей? Вспомните, что скалярные переменные могут хранить не только числа или строки, но и ссылки. Сложные (многоуровневые) структуры данных в Perl всегда образуются с помощью ссылок. Следовательно, «двумерные массивы» или «массивы массивов» в действительности реализуют­ся как массив ссылок на массивы — по аналогии с двумерными массивами С, кото­рые могут представлять собой массивы указателей на массивы.

Для большинства рецептов этой главы содержимое массивов несущественно. Например, проблема слияния двух массивов решается одинаково для массивов строк, чисел или ссылок. Решения некоторых проблем, связанных с содержимым массивов, приведены в главе 11 «Ссылки и записи». Рецепты этой главы ограни­чиваются обычными массивами.

Давайте введем еще несколько терминов. Скалярные величины, входящие в массив или список, называются элементами. Для обращения к элементу исполь­зуется его позиция, или индекс. Индексация в Perl начинается с 0, поэтому в сле­дующем списке:

<9>tune = ('The',    'Star-Spangled',    'Banner'  );

элемент "The ' находится в первой позиции, но для обращения к нему использу­ется индекс 0: $tune[O]. Это объясняется как извращенностью компьютерной логики, где нумерация обычно начинается с 0, так и извращенностью разработчи­ков языка, которые выбрали 0 как смещение внутри массива, а не порядковый но­мер элемента.

4.1. Определение списка в программе

Проблема

Требуется включить в программу список — например, при инициализации массива.

Решение

Перечислите элементы, разделяя их запятыми:




- Начало -  - Назад -  - Вперед -