Операция «запятая»

Бинарная операция «запятая» (,) в списковом контексте является всего лишь разделителем элементов списка и заносит в него оба своих аргумента:
@а = (1, 2); # Создается массив скаляров и его элементам 
             # присваиваются значения 1 и 2
В скалярном контексте эта операция полностью соответствует аналогичной операции языка С — сначала вычисляется левый операнд, а затем правый операнд, вычисленное значение которого и является возвращаемым значением этой операции:
$а = (1, 2); # Переменной $а присваивается значение 2
Эта операция обладает свойством сочетаемости и если в одном выражении она встречается несколько раз, то все ее вхождения вычисляются слева направо, приводя к тому, что возвращаемым значением в скалярном контексте является значение самого правого выражения из последовательности выражений, разделенных запятыми. Например, следующее выражение будет вычислено равным 25, если переменная $m равна 5:
$m, $m+5, $m**2;
Операция «запятая» несколько неудобна, если в списке значения должны задаваться парами, как, например, в конструкторе хэш-массива. Для улучшения читаемости подобных конструкций в языке Perl существует синоним операции «запятая» — операция =>, которая семантически полностью соответствует своему двойнику. Правда, эта операция обладает еще одним свойством, достаточно полезным в случае ее использования в качестве разделителя пар в конструкторах ассоциированных массивов: любой идентификатор, используемый в качестве ее левого операнда, интерпретируется как строковый литерал.

Следующая страница Содержание главы


Реклама