语法或构造简化if()语句?

时间:2010-09-14 17:01:02

标签: syntax conditional scope flow-control

我正在寻找一种语义或语言结构,它将简化我的一些if语句。如果我有一个带有或的if语句,我在两个值之间选择',我希望稍后在代码中提供所选的变量。

我会用伪代码写这个:

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

其中zxy的值,无论哪个触发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 个答案:

答案 0 :(得分:1)

对于这种情况。您可以使用?运算符:

z = x ? x : y;

其中读取:z是(如果x不为假)x,否则为y。

答案 1 :(得分:1)

在Python(也是Ruby)中,表达式x or y如果为真,则求值为x,否则为y。您可以将语句写为f(x or y)z = x or y

答案 2 :(得分:0)

实际上,像是

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

像在PHP中宣传的那样工作。谢谢,slebetman!