PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 120


The    list     is:   Peter, Paul, and Mary.

The    list     is:   To our parents, Mother Theresa, and God.

The    list     is:   pastrami, ham and cheese, peanut butter and jelly, and tuna.

The    list     is:   recycle tired, old phrases and ponder big, happy thoughts.


4.3. Изменение размера массива    119'

The list is:   recycle tired,   old phrases;   ponder

big,   happy  thoughts;   and   sleep  and   dream   peacefully.

Как видите, мы отвергаем порочную практику исключения последней запятой из списка, что нередко приводит к появлению двусмысленностей.

> Смотри также---------------------------------------------------------------------------------------------

Описание функции grep в perlfunc(l); описание тернарного оператора выбора в perlop(l). Синтаксис вложенных списков рассматривается в рецепте 11.1.

4.3. Изменение размера массива

Проблема

Требуется увеличить или уменьшить размер массива. Допустим, у вас имеется массив работников, отсортированный по размерам оклада, и вы хотите ограни­чить его пятью самыми высокооплачиваемыми работниками. Другой пример — если окончательный размер массива точно известен, намного эффективнее выде­лить всю память сразу вместо того, чтобы увеличивать массив постепенно, добав­ляя элементы в конец.

Решение

Присвойте значение $#ARRAY:

U Увеличить или уменьшить ©ARRAY $#ARRAY  =  $NEW_LAST_ELEMENT_INDEX_NUMBER

Присваивание элементу, находящемуся за концом массива, автоматически уве­личивает массив:

$ARRAY[$NEW_LAST_ELEMENT_INDEX_NUMBER]   =   $VALUE;

Комментарий

$#ARRAY — последний допустимый индекс массива @ARRAY. Если ему присваивается значение меньше текущего, массив уменьшается. Отсеченные элементы безвозв­ратно теряются. Если присвоенное значение больше текущего, массив увеличива­ется. Новые элементы получают неопределенное значение.

Однако $#ARRAY не следует путать с ©ARRAY. $#ARRAY представляет собой послед­ний допустимый индекс массива, a @ARRAY (в скалярном контексте, то есть в чис­ловой интерпретации) — количество элементов. $#ARRAY на единицу меньше @ARRAY, поскольку нумерация индексов начинается с 0.




- Начало -  - Назад -  - Вперед -