Анимация
JavaScript
|
Главная Библионтека Скалярные переменные Имя переменной - это имя контейнера, который содержит одно или более значений. Имя переменной остается постоянным на протяжении всей программы, но значение (или значения), содержащееся в этой переменной, как правило, в ходе выполнения программы непрерывно изменяется. Скалярная переменная содержит одно скалярное значение (представляющее собой число, строку или ссылку). Имена скалярных переменных состоят из знака доллара и буквы, за которой могут следовать еще несколько букв, цифр и знаков подчеркивания*. Строчные и прописные буквы различаются: переменная $а и переменная $а - разные. Все буквы, цифры и знаки подчеркивания в имени переменной имеют значение. Так, переменная $a very long variable that ends in l отличается от переменной $a very long variable that ends in 2 Имена переменных следует, как правило, подбирать так, чтобы они имели какой-то смысл в связи со значением переменной. Например, имя $xyzl23, вероятно, не очень описательно, в отличие от $li ne lengt-h. Скалярные операции и функции Самая распространенная операция, выполняемая над скалярной переменной - присваивание, которое представляет собой способ задания значения этой переменной. Операция присваивания в Perl обозначается знаком равенства (почти как в С и ФОРТРАНе). С левой стороны ставится имя переменной, с правой - присваиваемое ей значение или выражение, при помощи которого это значение вычисляется, например: За = 17; # присвоить переменной Sa значение 17 $Ь = $а + 3; # присвоить $Ь текущее значение $а плюс 3 (20) $Ь = $Ь * 2; # присвоить $Ь значение $Ь, умноженное на 2 (40) Обратите внимание: в последней строке переменная $Ь используется дважды: один раз для получения значения (в правой части), а второй - для указания, куда поместить вычисленное выражение (в левой части). Это допустимый, надежный и довольно распространенный прием. Распространен он настолько, что через минуту мы увидим, как все это можно записать в сокращенном виде. Возможно, вы заметили, что скалярные переменные всегда предваряются знаком $. В shell знак $ используют для получения значения, а при присваивании нового значения его не указывают. В Java и С этот символ * Их количество ограничено числом 255. Надеемся, этого достаточно. вообще опускается. Если вы постоянно присваиваете одной или нескольким переменным новые значения, то неминуемо будете делать ощибки. (Наще рещение заключалось в том, чтобы прекратить писать программы на shell, awk и С, но для вас этот путь может быть неприемлем.) Скалярное присваивание не только является операцией, его можно использовать и в качестве значения, аналогично тому как это делается в С. Другими словами, выражение $а=3 имеет значение, аналогично тому как имеет некоторое значение выражение $а+3. Значением является та величина, которая присваивается, т.е. $а=3 имеет значение 3. Хотя на первый взгляд это может показаться несуразным, использование присваивания как значения полезно, если вы хотите присвоить переменной промежуточное значение в выражении или просто скопировать одно значение в несколько переменных. Например: $Ь = 4 + ($а =3); # присвоить 3 переменной $а, затем прибавить к 4, # в результате чего $Ь получит значение 7 $d = ($с =5); # скопировать 5 в $с, а затем и в $d $d = Sc = 5; # то же самое, но без круглых скобок Последнее выражение работает, потому что присваивание имеет ассоциативность справа. Операции присваивания с вычислением Выражения типа $ а = $а + 5 (где переменная стоит по обе стороны от оператора присваивания) встречаются довольно часто, поэтому в Perl применяется сокращенный метод записи операции изменения переменной - операция присваивания с вычислением. Почти все двоичные операции, с помощью которых вычисляются значения, имеют соответствующую форму с добавленным знаком равенства. Например, следующие две строки эквивалентны: $а = $а + 5; # без операции присваивания с вычислением $а += 5; # с операцией присваивания с вычислением Эквивалентны и эти строки: $Ь = $Ь * 3; $Ь «= 3,- В каждом из вышеприведенных случаев данная операция вызывает изменение существующего значения переменной определенным способом, а не просто замену этого значения результатом вычисления какого-то нового выражения. Другой распространенной операцией присваивания является операция конкатенации строк: $str = $str . " "; # добавить пробел к $str $str .= " "; # то же самое, но с операцией присваивания Почти все двоичные операции, записанные таким образом, допустимы. Например, операция возведения в степень записывается как **=. Так, $а * 3 означает "возвести число, содержащееся в переменной $а, в третью степень и поместить результат обратно в $а". Как и простая операция присваивания, эти операции также могут быть использованы в качестве значения, которым является новое значение переменной. Например: $а = 3; Sb = ($а += 4); # $а и $Ь теперь равны 7 Автоинпремент и автодекремент Казалось бы, для прибавления единицы к $а можно просто записать За += 1, но Perl идет на щаг дальше и сокращает даже эту запись. Операция - + (автоинкремент) прибавляет к своему операнду единицу и возвращает ин-крементированное значение, например: $а += 1; # с операцией присваивания ++$а; # с префиксным автоинкрементом $d = 17; $е = ++$d; # и $е, и $d теперь равны 18 Здесь операция ++ используется как префиксная, т.е. знак операции стоит слева от операнда. Автоинкремент можно записывать и в суффиксной форме (справа от операнда). В этом случае результатом выражения является старое значение переменной, которое она имела до инкрементирования. Например: $с = 17; $d = $с++; # $d равно 17, а $с равно 18 Поскольку значение операнда изменяется, операнд должен быть скалярной переменной, а не просто выражением. Не стоит рассчитывать, что ++16 получит значение 17, и нельзя сделать так, чтобы ++($а+$Ь) каким-то образом стало больше, чем сумма $а и $Ь. Операция автодекремента (--) похожа на операцию автоинкремента, но здесь не прибавляется единица, а вычитается. Как и операция автоинкремента, операция автодекремента имеет две формы - префиксную и суф-фиксную. Например: $х = 12; --$х; # $х теперь равно 11 $у = $х-; # $у равно 11, а $х - 10 Операции автоинкремента и автодекремента выполняются и над значениями с плавающей запятой. Автоинкрементирование переменной со значением 4, 2 дает, как и следовало ожидать, 5,2*. * Операция автоинкрементирования выполняется даже над строками. См. по данному вопросу книгу Programming Perl или man-страницу perlop(l). 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [ 21 ] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |