Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Документация, учебники по Perl.doc
Скачиваний:
3
Добавлен:
29.10.2018
Размер:
2 Мб
Скачать
☆

Операторы числовых отношений

Эти операторы определяют отношения между двумя числовыми операндами. С их помощью вы можете выяснить, больше ли один операнд другого или, может быть, они равны, и т.д.

Замечание: запомните, что оператор проверки на равенство обозначается как двойной знак "равно" - "==". Это очень распространенная ошибка, когда люди используют "=" вместо "==" и тем самым производят не проверку на равенство, а присвоение значения. Операторы равенства op1 == op2 Этот оператор возвращает "истина", если операнды равны. op1 != op2 Этот оператор возвращает "истина", если операнды не равны. Операторы сравнения op1 < op2 Оператор возвращает "истина", если операнд1 меньше операнда2 Op1 <= op2 Оператор возвращает "истина", если операнд1 меньше либо равен операнду2 op1 > op2 Оператор возвращает "истина", если операнд1 больше операнда2 op1 >= op2 Оператор возвращает "истина", если операнд1 больше либо равен операнду2 op1 <=> op2 Оператор возвращает 1, если операнд1 больше операнда2, 0, если операнды равны, -1, если операнд1 меньше операнда2

С практическим применением этих операторов вы познакомитесь в главе 7 "Операторы управления". А сейчас мы рассмотрим пример использования оператора "<=>".

Данный оператор используют для быстрого выяснения отношений между двумя операндами (вы только вдумайтесь - какая игра слов!). Его часто используют в алгоритмах сортировки. Вот небольшой участок программы: $lowVar = 8; $midVar = 10; $hiVar = 12; print($lowVar <=> $midVar, "\n"); print($midVar <=> $midVar, "\n"); print($hiVar <=> $midVar, "\n"); результатом работы будет: -1, 0, 1

Операторы отношений строк

Эти операторы используются для выяснения отношений между двумя операндами-строками. Принцип действия и области применения похожи на случай с операторами числовых отношений, которые мы рассмотрели только что. Операторы равенства op1 eq op2 "Истина", если строка1 равна строке2 Op1 ne op2 "Истина", если строка1 не равна строке2 Операторы сравнения op1 lt op2 "Истина", если строка1 меньше строки2 Op1 le op2 "Истина", если строка1 меньше либо равна строке2 Op1 gt op2 "Истина", если строка1 больше строки2 Op1 ge op2 "Истина", если строка1 больше либо равна строке2 Op1 cmp op2 1 - если строка1 больше строки2, 0 - если строки равны, -1 - если строка1 меньше строки2

Строки сравниваются, используя ASCII-значения каждого символа строк. Ну и почти уже по традиции - подробнее об использовании этих операторов вы узнаете… правильно! - из главы 7 "Операторы управления" :)))

Использование ternary-оператора

Вообще-то, этот оператор на самом деле есть последовательность операторов. Его использование выглядит следующим образом: CONDITION-PART ? TRUE-PART : FALSE-PART Это, в свою очередь, является сокращением от вот такого кода: if (CONDITION-PART) { TRUE-PART } else { FALSE-PART }

Опять же, вы ничего не узнаете о практическом применении этого оператора, пока не дойдете до главы 7 "Операторы управления".

Работает все это следующим образом: проверяется условие "CONDITION-PART", если оно истинно, то выполняется часть "TRUE-PART", если же оно ложно, то выполняется часть "FALSE-PART".

Данный оператор часто также называют условным оператором. Пример использования: сей оператор используется, чтобы присвоить переменной одно из двух возможных значений, основываясь на неком условии. $secondVar = ($firstVar == 0) ? 0 : $array[0]; здесь переменной $secondVar будет присвоено значение: 0 - если переменная $firstVar равна 0, и $array[0] (первый элемент массива $array) - если переменная не равна нулю. Вы можете использовать вложенную форму данного оператора: $firstVar = $temp == 0 ? $numFiles++ : ($temp == 1 ? $numRecords++ : ($temp == 3 ? $numBytes++ : $numErrors++));

А вот еще более странное (на первый взгляд) использование этого оператора: $firstVar = 1; $secondVar = 1; $thirdVar = 1; ($thirdVar == 0 ? $firstVar : $secondVar) = 10; print "$firstVar\n"; print "$secondVar\n"; print "$thirdVar\n"; в зависимости от значения переменной $thirdVar значение 10 может присваиваться одной из двух переменных - $firstVar и $secondVar. Результатом работы программы будет: 1, 10, 1