2010-09-14 3 views
2

Я ищу семантическую или языческую конструкцию, которая упростит некоторые из моих if утверждений. Если у меня есть оператор 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 может не иметь этой возможности.

ответ

1

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

+0

Спасибо, jleedev, это именно то, что я искал. Есть ли название для этой конструкции? – user151841

1

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

z = x ? x : y; 

Который гласит: г является (если й не является ложным) х в противном случае у.

0

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

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

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

Смежные вопросы