2

我正在寻找一种语义或语言结构来简化我的一些if陈述。如果我有一个带有 or 的 if 语句,我在两个值之间“选择”,我希望稍后在代码中可以使用该选择的变量。

我会用伪代码写这个:

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

z的值 在哪里,以触发为真的为准。否则我在写xyif

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

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

现在在那个例子中,重复并不多,但在我的实际情况下,每个if块中大约有 6 行代码是相同的重复。所以我写了类似的东西:

if ( x )  {
    z = x;
} 

if ( y ) {
   z = y;
}

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

但这似乎太迂回了,我怀疑在某个地方,某个大师想出了一个很好的语法来制作一个单行if。在我可以将触发值绑定到后续块中的变量的任何地方,是否有一种语言结构?这个结构应该叫什么?

我工作的实际情况是PHP,所以我意识到PHP可能没有这个能力。

4

3 回答 3

1

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

z = x ? x : y;

其内容为:z 是(如果 x 不为假)x,否则它是 y。

于 2010-09-14T17:25:29.300 回答
1

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

于 2010-09-14T17:47:02.600 回答
0

实际上,像

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

像在 PHP 中宣传的那样工作。谢谢,睡衣人!

于 2010-09-14T18:30:20.107 回答