2015-12-09 136 views
1

我想写类似:可以压缩这个吗?

if (x == a || x == b || x == c || x == d) 
{ 
    //...do something 
} 

的方式,是短,不重复的代码?

编辑:这是在java中,对不起。 另外,a,b,c和d是常数。

+5

和语言是......? – Jens

+0

@Lurker - c呢? – nicomp

+0

'a'到'd'变量?或者它们是连续的,枚举常量?这个例子不是很清楚。顺便说一下,我并不认为这个例子必然是“重复代码”的糟糕情况。 – lurker

回答

0
if (in_array(x, array('a', 'b', 'c'))) { 

} 

检查数组中是否存在x的值。

您没有提供使用的编程代码,我使用了PHP函数。

0

看起来很好,很容易阅读而且不复杂。清晰是国王。变量名称并不是那么好,但可能是因为代码段不在上下文中。在大多数语言中,逻辑将以“短路”方式进行评估,以便您获得的第一个True结果将终止对表达式的评估并继续执行“做某事”代码。

0

如果这是C#,并且x的类型是int,那么可以使用Linq按如下方式重写条件。

if(new int[]{ a, b, c, }.Contains(x)) 
{ 
    // do stuff 
} 
0

C#

List<int> list = new List<int> {a, b, c, d}; 
if (list.contains(x)) 
{ 
} 

if (new List<int> {a, b, c, d}.Contains(x)) 
{ 
} 
0

不论我认为这将是最好的尝试和捕捉操作的意图,而不是明确地检查布尔结果的语言。

您可能没有获得在制作方面什么也短,但至少其意图是明确的

if (SomethingThatReturns1() || 
    SomethingThatReturns2() || 
    SomethingThatReturns3() || 
    SomethingThatReturns4()) 
       { 
        //...do something 
       }