Шаг 83.
Операция выбора

    На этом шаге мы рассмотрим единственную тернарную операцию.

    Единственная тернарная операция выбора

   <операнд1> ? <операнд2> : <операнд3>;
полностью заимствована из языка С и работает точно так же, как и ее двойник. Если операнд1 истинен, то возвращается значение операнда2, в противном случае операнд3:
  ($n ==  1) ? $а : @array;

    Скалярный или списковый контекст, в котором используется эта операция, распространяется и на возвращаемое значение этой операции:

    $а = $yes ? $b : @b; # Скалярный контекст. Если возвращается
                         # массив @b, то присваивается количество его
                         # элементов.

    Операцию выбора можно использовать в качестве левого операнда операции присваивания, если и второй, и третий ее операнды являются правильными lvalue, т.е. такими значениями, которым можно присвоить какое-либо значение, например, именами переменных:

    ($а = $yes ? $b : @b) = @с;

    В связи с тем, что результатом операции выбора может оказаться правильное lvalue, следует использовать скобки для уточнения ее операндов. Например, если в следующем выражении

    ($а % 3) ? ($а += 2) : ($а -= 2); 
опустить скобки вокруг операндов
    $а % 3 ? $а += 2 : $а -= 2;
то оно будет откомпилировано следующим образом
    (($а % 3) ? ($а += 2) : $а) -= 2;

    На следующем шаге мы приведем общие сведения о списковых операциях.




Предыдущий шаг Содержание Следующий шаг