我想写类似:可以压缩这个吗?
if (x == a || x == b || x == c || x == d)
{
//...do something
}
的方式,是短,不重复的代码?
编辑:这是在java中,对不起。 另外,a,b,c和d是常数。
我想写类似:可以压缩这个吗?
if (x == a || x == b || x == c || x == d)
{
//...do something
}
的方式,是短,不重复的代码?
编辑:这是在java中,对不起。 另外,a,b,c和d是常数。
if (in_array(x, array('a', 'b', 'c'))) {
}
检查数组中是否存在x的值。
您没有提供使用的编程代码,我使用了PHP函数。
看起来很好,很容易阅读而且不复杂。清晰是国王。变量名称并不是那么好,但可能是因为代码段不在上下文中。在大多数语言中,逻辑将以“短路”方式进行评估,以便您获得的第一个True结果将终止对表达式的评估并继续执行“做某事”代码。
如果这是C#,并且x
的类型是int
,那么可以使用Linq按如下方式重写条件。
if(new int[]{ a, b, c, }.Contains(x))
{
// do stuff
}
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))
{
}
不论我认为这将是最好的尝试和捕捉操作的意图,而不是明确地检查布尔结果的语言。
您可能没有获得在制作方面什么也短,但至少其意图是明确的
if (SomethingThatReturns1() ||
SomethingThatReturns2() ||
SomethingThatReturns3() ||
SomethingThatReturns4())
{
//...do something
}
和语言是......? – Jens
@Lurker - c呢? – nicomp
'a'到'd'变量?或者它们是连续的,枚举常量?这个例子不是很清楚。顺便说一下,我并不认为这个例子必然是“重复代码”的糟糕情况。 – lurker