是否有更简单的通用方法来运行一组使用if-else链中设置的值的代码,只有if-else条件之一为真?我有点想用一条声明来关闭链条,这意味着与其他方面相反......就像“if”,“else”,“好吧其中一条是真的,现在这样做。”
通常一个明显的实现是:
Dataset
我能想出的最好的潜在解决方案是使用可选的z,然后使用if(somethingWasTrue)而不是if(z)
答案 0 :(得分:4)
根本不需要somethingWasTrue
变量。使用易碎块:
do {
if( x )
z = 0;
else if( y )
z = ResultOfSomething();
else
break;
// code that uses z
} while(false);
答案 1 :(得分:2)
您可以break
退出循环以提前终止else
,然后继续处理。
do {
if( x )
z = 0;
else if( y )
z = ResultOfSomething();
else
break;
// code that uses z
} while( 0 );
答案 2 :(得分:2)
我会选择你的"明显的实施"。我认为这是最清晰的。
并不是真的很浪费。即使是-O1优化级别,g ++和clang ++都会消除bool
:see here。
答案 3 :(得分:0)
你可以试试这个:
bool somethingWasTrue = true;
if( x )
z = 0;
else if( y )
z = ResultOfSomething();
else
// code that uses z
如果前两个“ifs”为假,你想要一个“默认”选择,只需在结尾放一个“else”。
答案 4 :(得分:0)
如何创建子功能:
void foo(int z)
{
// code that uses z
}
然后
if (x)
foo(0);
else if( y )
foo(ResultOfSomething());