Шаг 56.
Создание ссылок. Конструктор анонимного ассоциативного массива

    На этом шаге мы рассмотрим создание ссылок на анонимный ассоциативный массив.

    По аналогии с массивами можно создавать ссылки на анонимные ассоциативные массивы, используя фигурные скобки. Операция присваивания

 %hash_ref = {
      'Оnе'=>1,
      'Two'=>2,
      'Three'=>3 };

создаст анонимный хеш-массив ('One'=>1, 'Two'=>2, 'Three'=>3) и присвоит переменной %hash_ref значение ссылки на этот хеш (его адрес в памяти).

    Фигурные скобки используются во многих конструкциях, например, для обращения к индивидуальному элементу хеш-массива

  $а = $myhash{"first"}

или для выделения блока операторов. Обычно такие случаи легко различимы, и их нельзя спутать с порождением ссылки на анонимный хеш. Но иногда возникают неоднозначные ситуации, требующие разрешения. Забегая вперед, приведем пример, связанный с определением функции пользователем.

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

  sub get_hash_ref {  {@_} }

    В данном примере внутренняя конструкция в фигурных скобках интерпретируется как блок. Для того чтобы она интерпретировалась как ссылка на анонимный хеш, необходимо использовать функцию return или поставить перед внутренней конструкцией знак "+":

sub get_hash_ref { return {@_} } 
   или
sub get_hash_ref {  +{@_} }

    На следующем шаге мы рассмотрим другие способы создания ссылок.




Предыдущий шаг Содержание Следующий шаг