Тернарный оператор ?: в Perl

В языке программирования Perl существует один оператор который работает с тремя операндами. Тернарный оператор, это 2 символа, ?:, причем эти символы записываются не рядом, а между операндами.

Тернарный оператор возвращает либо второй, либо третий операнд в зависимости от значения первого операнда. Если первый операнд — это истина, то тогда возвращается второй операнд, если же первый операнд — это ложь, то тогда возвращается третий операнд (подробнее про истину и ложь в Perl).

Вот пример:

▶ Run
#!/usr/bin/perl

my $var = 1 ? 100 : 200;

print $var;

Программа выведет на экран число 100.

  • Сначала записывается первый операнд, в нашем примере это число 1
  • Потом идет символ ?
  • Потом записывается второй операнд, 100
  • Потом идет символ :
  • Потом записывается третий операнд, 200

Первый операнд 1 — это истина, поэтому результатом оператора является второй операнд, т.е. число 100. Именно это значение присваивается переменной и отображается на экране.

Вместо тернарного оператора можно использовать if-else. Вот программа, которая работает так же как и предыдущая:

▶ Run
#!/usr/bin/perl

my $var;

if (1) {
    $var = 100;
} else {
    $var = 200;
}

print $var;

Иногда удобнее использовать тернарный оператор, а иногда конструкцию if-else.

Другие статьи

Комментарии