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