Иллюстрированный самоучитель по Perl



         

Переменные - часть 2


Замечание

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

Переменные массивов и хешей, а также их конструкторы, используемые в качестве операндов операции присваивания (=), будут иметь разные значения в зависимости от используемого контекста.

В списковом контексте конструктор массива будет иметь значение, представляющее собой все значения списка в заданном порядке, тогда как в скалярном контексте он будет иметь значение, равное значению последнего элемента списка:

@аггау = (0, 2, 4); # Массив скаляров баггау

# содержит три элемента: 0, 2, 4. $last = (0, 2, 4);

# Значение скалярной переменной $last равно 4.

Переменная массива скаляров в списковом контексте возвращает список всех элементов массива, а употребленная в скалярном контексте, в отличие от своего конструктора, будет иметь значение, равное числу элементов массива:

@new_array = Sarray; # Массив @new_array

# содержит все элементы массива @аггау. $number = Sarray;

# Скалярная переменная $number

# равна 3 - числу элементов массива Sarray.

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

($а, $b = (1, 2, 3); # $а = 1, $ b = 2.

($а, $b $с) = (1, 2); tt $а= 1, $ b =2, $с = "".

В языке Perl каждая операция имеет вычисляемое значение. Значением операции присваивания со скаляром в качестве правого операнда является значение этого скаляра в любом контексте. Если правым операндом является конструктор массива или массив, то в списковом контексте значением операции присваивания будет список элементов массива, а в скалярном контексте — число элементов массива.




Содержание  Назад  Вперед