Синтаксис или конструкция для упрощения оператора if ()? - PullRequest
2 голосов
/ 14 сентября 2010

Я ищу семантическую или языковую конструкцию, которая упростит некоторые из моих if утверждений.Если у меня есть оператор if с или или, где я «выбираю» между двумя значениями, я бы хотел, чтобы эта выбранная переменная была доступна позже в коде.

Я напишу это в псевдокоде:

if ( x or y ) {
    function(z);
}

Где z - это значение x или y, в зависимости от того, что срабатывает if, чтобы быть правдой,В противном случае я пишу

if ( x ) {
    ...
    function(x);
} 

if ( y ) { 
    ...
    function(y);
}

Теперь в этом примере дублирование невелико, но в моей реальной ситуации есть около 6 строк кода, которые будут идентичны дублированию в каждом блоке if.Поэтому я напишу что-то вроде:

if ( x )  {
    z = x;
} 

if ( y ) {
   z = y;
}

if ( z ) {
    ...
    function(z);
}

Но это кажется довольно окольным, я подозреваю, что где-то вдоль строки какой-то гуру придумал хороший синтаксис для создания однострочной if.Есть ли где-нибудь конструкция в языке, где я могу связать значение запуска с переменной в следующем блоке?Как будет называться эта структура?

Фактическая ситуация, в которой я работаю, связана с PHP, поэтому я понимаю, что PHP может не иметь такой возможности.

Ответы [ 3 ]

1 голос
/ 14 сентября 2010

В Python (также Ruby) выражение x or y оценивается как x, если оно истинно, иначе y. Вы можете написать заявление как f(x or y) или z = x or y.

1 голос
/ 14 сентября 2010

Для этой конкретной ситуации.Вы можете использовать оператор ?:

z = x ? x : y;

, который гласит: z есть (если x не ложно) x в противном случае это y.

0 голосов
/ 14 сентября 2010

На самом деле, что-то вроде

if ( $z = ( $x ? $x : $y ) ) {
    function($z);
}

Работает как рекламируется в PHP. Спасибо, блядь!

...