Из языка программирования C заимствованы операции увеличения и уменьшения на единицу, или автоинкремента и автодекремента соответственно. В отличие от перечисленных выше бинарных операций, имеющих два операнда, это унарные операции с одним операндом, применяемые к переменным. Эти операции изменяют значение своего операнда, чем отличаются от большинства других операций, не изменяющих значения операндов. Они могут записываться как в префиксной форме, когда знак операции стоит перед именем переменной, так и в постфиксной форме (также называемой суффиксной), когда знак операции стоит после переменной:
++ автоинкремент или увеличение на 1 (например, $n++ или ++$n)
-- автодекремент или уменьшение на 1 (например, $n-- или --$n)
В префиксной форме значением выражения будет значение операнда после изменения, а в постфиксной - значение операнда до изменения. Особенности применения префиксной и постфиксной форм можно показать на таком простом примере:
$n = 25; # начальное значение переменной $n
$x1 = $n++; # в $x1 сохранено 25, затем в $n стало 26
$x2 = ++$n; # в $n стало 27 и оно сохранено в $x2
$x3 = --$n; # в $n стало 26 и оно сохранено в $x3
$x4 = $n--; # в $x4 сохранено 26, затем в $n стало 25
--$n; # и наконец $n уменьшилось до 24
Хотя выражение с операцией автоинкремента или автодекремента возвращает значение, часто оно отбрасывается, а сама операция применяется только для изменения значения переменной, что является побочным эффектом ее выполнения. Например:
++$done_count; # увеличиваем счетчик обработанных строк
$left_count--; # уменьшаем счетчик оставшихся строк
В отличие от других языков, в Perl эти операции могут применяться не только к целочисленным, но и к дробным значениям переменных:
$f = 2.5; # начальное значение переменной $f
$f++; # теперь в $f стало 3.5
Операции автоинкремента и автодекремента более естественны, чем используемые в других языках эквивалентные выражения наподобие $n = $n + 1 (которые так шокируют математиков). К тому же они обычно и более эффективно реализованы.
В Perl есть операции унарный минус и унарный плюс, применяемые к числовым и строковым значениям. Например, если в переменной $n содержится число, в $s - строка, а в $x - любое значение, то унарные знаки подействуют так:
- унарный минус ($n = -$n; сменит знак числа в $n на противоположный)
- унарный минус ($s = -$s; добавит перед строкой в $s символ '-')
+ унарный плюс ($x = +$x; не изменит значения любой переменной)
Поскольку унарный плюс не изменяет значения выражения, он может применяться в ситуации, когда синтаксис требует наличия разделителя, а пробел использовать нежелательно. Например, при указании выражения для вычисления Рerl в командной строке.
К унарным операциям также относится операция вызова функции. Многие встроенные функции языка Perl, которые будут рассмотрены в последующих лекциях, в действительности являются именованными унарными операциями. Они могут записываться в традиционном для функций виде с круглыми скобками или как унарные операции без скобок: sin($x) или sin $x. В таблице 3.1 приведены математические функции и встроенные функции работы со временем.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии