Читаем Язык программирования Perl полностью

Разыменование ссылки на массив производится аналогично разыменованию ссылки на скалярную переменную, только с использованием префикса массива @:

# будет выведено одно и то же значение @array: print "@{$ref2array} @$ref2array\n";

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

my @array_copy = @{$ref2array}; # копия массива @{$ref2array}[0,1] = ('Новый', 'список'); # срез массива

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

print ${$ref2array}[0]; # или: $$ref2array[0]

Обращение по ссылке к элементу массива более наглядно записывается с помощью инфиксной операции ->, слева от которой записывается имя переменной, содержащей ссылку на массив, а справа - индекс элемента массива в квадратных скобках. Операция "стрелка" наглядно представляет ссылку, символы -> в ней записываются без пробела между ними. Вот пример:

# доступ по ссылке к значению элемента массива: my $element_value = $ref2array->[0]; # изменение значения элемента массива: $ref2array->[0] = $new_value;

Как к обычным скалярным значениям можно обращаться по ссылке к отдельным элементам массива, например:

$ref2element = \$array[0]; # ссылка на элемент массива ${$ref2element} = $new_value; # изменение элемента массива

В элементах массива можно хранить ссылки на другие массивы: это позволяет создавать в Perl многомерные массивы или "массивы массивов", как это делается в языке Java. В этом случае доступ к элементам многомерного массива также обычно записывается с использованием операции "стрелка", которая употребляется нужное количество раз:

@{$ref2NxM->[$n]} # вложенный массив $ref2NxM->[$n]->[$m] # скалярный элемент двумерного массива $ref2NxMxP->[$n]->[$m]->[$p] # элемент 3-мерного массива

Для удобства чтения программы допускается не записывать операцию "стрелка" между парами индексов массива в квадратных скобках:

$ref2NxM->[$n][$m] # так гораздо симпатичнее! $ref2NxMxP->[$n][$m][$p] # а тем более так...

Для примера приведем программу создания двумерного массива из трех строк по пять элементов в каждой строке:

my $ref2RxC = []; # ссылка на анонимный массив массивов for (my $row = 0; $row < 3; $row++) { # цикл по строкам $ref2RxC->[$row] = []; # строка: вложенный массив for (my $col = 0; $col < 5; $col++) { # по колонкам $ref2RxC->[$row]->[$col] = ($row+1).'.'.($col+1); } }

Небольшие многомерные массивы удобно создавать, используя вложенные анонимные массивы. Это присваивание создаст такой же массив, что и в предыдущем примере:

$ref2RxC = [ # ссылка на двумерный анонимный массив [1.1, 1.2, 1.3, 1.4, 1.5], # 1-я "строка" [2.1, 2.2, 2.3, 2.4, 2.5], # 2-я "строка" [3.1, 3.2, 3.3, 3.4, 3.5] # 3-я "строка" ]; # конец присваивания ссылки

На рис. 11.4 изображен получившийся в результате "массив массивов" (Аrray of Аrrays, AoA), представляющий собой многомерный массив.

Организация многомерного 'массива массивов'

Рис. 11.4.  Организация многомерного 'массива массивов'

Для вывода значений многомерного массива обычно используется нужное число вложенных циклов for или других циклических конструкций:

Перейти на страницу:

Похожие книги

Информатика: аппаратные средства персонального компьютера
Информатика: аппаратные средства персонального компьютера

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

Владимир Николаевич Яшин

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT
Цифровой журнал «Компьютерра» № 24
Цифровой журнал «Компьютерра» № 24

ОглавлениеБольшие новостиMicrosoft BizSpark: поиски инвесторов и менторов Автор: Григорий РудницкийNASA открыло виртуальную лунную базу Автор: Михаил КарповТерралабПромзона: Катушка с лупой Автор: Николай МаслухинPixel Qi: дисплеи, не слепнущие на солнце Автор: Юрий ИльинПромзона: Батарейки Microsoft Автор: Николай МаслухинСофт: Process Explorer — порнобаннер в прицеле Автор: Николай МаслухинSynaptics: тачпады нового поколения Автор: Олег НечайПромзона: Очки-суфлер Автор: Николай МаслухинМобильный интернет для малого бизнеса Автор: Максим БукинВещь дня: беззеркальная камера Lumix G2 Автор: Андрей ПисьменныйHDBaseT 1.0: дешёвая замена HDMI Автор: Олег НечайПромзона: Воздушный холодильник Автор: Николай МаслухинСофт: Настраиваем Ubuntu с помощью Ubuntu Tweak Автор: Крестников ЕвгенийПромзона: Бескрайний бассейн Автор: Николай МаслухинСпособы обмана в мобильных сетях Автор: Максим БукинСвоя играВасилий Щепетнёв: О пользе словаря Автор: Василий ЩепетневКивино гнездо: Человек против обмана Автор: Берд КивиMicrosoft: что пошло не так Автор: Андрей ПисьменныйКафедра Ваннаха: Скольжение к сингулярности Автор: Ваннах МихаилВасилий Щепетнёв: Гамбит Форт-Росс Автор: Василий ЩепетневКафедра Ваннаха: Облачное программирование и Пуэрто-Рико Автор: Ваннах МихаилВасилий Щепетнёв: Следы на целлулоиде Автор: Василий ЩепетневКивино гнездо: Конфликт криптографии и бюрократии Автор: Берд КивиИнтерактивЛюдмила Булавкина, директор YouDo по маркетингу, о любительском контенте Автор: Юрий ИльинМакс Зацепин и Глеб Никитин о музыкальной игре для iPad Автор: Юрий ИльинСергей Матиясевич (3D Bank) о рынке трёхмерных моделей Автор: Юрий ИльинВ. Репин (ИХБФМ СО РАН) о бактерии из вечной мерзлоты Автор: Алла АршиноваДмитрий Завалишин об операционной системе «Фантом» Автор: Андрей ПисьменныйБлогиАнатолий Вассерман: «Марс-500» Автор: Анатолий ВассерманКак большой оператор споткнулся о маленького SaaS-провайдера Автор: Анисимов КонстантинАнатолий Вассерман: Дальневосточные «партизаны» Автор: Анатолий ВассерманГолубятня-ОнлайнГолубятня: Сидр №4 Автор: Сергей ГолубицкийГолубятня: Бедность Автор: Сергей Голубицкий

Журнал «Компьютерра»

Зарубежная компьютерная, околокомпьютерная литература