Шаг 59.
Блоки в операциях разыменования ссылок

    На этом шаге мы рассмотрим использование блоков при выполнении операции разименования.

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

    ${$d[0]} = 7; 
    ${$h{"one"} } = 1; 
    ${&f()}[l] = 3;

    Разберем первую строку. Начальный символ $ является признаком скалярной переменной, за которым должно следовать ее имя. Вместо имени используется блок, следовательно, выражение внутри блока интерретируется как ссылка. В данном случае осуществляется разыменование ссылки $d[0], являющейся элементом массива @d. Аналогично, во второй строке осуществляется обращение к скалярной переменной, на которую указывает ссылка $h{"one"}, являющаяся элементом ассоциативного массива %h. В третьей строке блок, возвращающий ссылку, состоит из одного обращения к функции f(). Ее значение интерпретируется как ссылка на массив, и второму элементу этого массива присваивается значение 3.

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




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