Язык программирования Perl
Шрифт:
Для примера приведем программу создания двумерного массива из трех строк по пять элементов в каждой строке:
Небольшие
На рис. 11.4 изображен получившийся в результате "массив массивов" (Аrray of Аrrays, AoA), представляющий собой многомерный массив.
Рис. 11.4.Организация многомерного 'массива массивов'
Для вывода значений многомерного массива обычно используется нужное число вложенных циклов for или других циклических конструкций:
В результате выполнения этой программы построчно будет выведено значение всех элементов из массива массивов:
В любой массив можно поместить список ссылок на другие программные объекты, например, таким образом:
Можно записать то же самое более простым способом, поставив операцию взятия ссылки перед списком объектов в круглых скобках:
Списки ссылок на объекты могут, например, передаваться в подпрограмму для изменения перечисленных в списке объектов. Передача аргументов в подпрограммы по ссылке и по значению будет рассмотрена в следующей лекции.
Если попытаться разыменовать ссылку на несуществующий объект, то он автоматически будет создан. В этом случае работает удивительный механизм, называемый автосозданием объекта ссылки (буквально: "автооживление" - autovivification).
Например, во время обращения по ссылке к элементу массива автоматически создается массив из пяти элементов, ссылка на него присваивается в переменную $array_ref, а пятый элемент получает начальное значение:
Подобным образом применяя автосоздание объектов, можно создать цепочку ссылок, указывающих на некоторое значение:
Все, что говорилось о ссылках на массивы, применимо к ссылкам на хэши. Ссылка на переменную типа "хэш" получается с помощью операции взятия ссылки:
Ссылка на анонимный хэш создается с помощью фигурных скобок, в которых записываются начальные значения хэша:
При помощи анонимного хэша удобно создавать копию существующего хэша, чтобы затем работать с ним через ссылку:
Разыменование ссылки на хэш записывается так же, как разыменование ссылки на массив, но с префиксом хэша %. При разыменовании ссылки на хэш переменную, содержащую ссылку, для наглядности можно обрамлять фигурными скобками:
При помощи ссылок с хэшами можно выполнять любые действия, обращая внимание на правильное разыменование ссылки:
Разыменование ссылки на элемент хэша также записывается уже знакомым нам способом, когда перед ссылочной переменной ставится префикс скаляра $, а после нее - ключ элемента хэша в фигурных скобках. Ссылочная переменная может заключаться в фигурные скобки: