假设您有5个返回布尔值的函数,并且取决于函数返回的值,您需要返回一个值.例如
你有函数f1, f2, f3, f4, f5,每个函数不带参数,返回true或false.这为您提供了2 ^ 5种可能性,对于每种可能性,您需要返回一个唯一的数字,如果
f1() = true, f2() = true, f3() = true, f4() = true, f5() = true return 1
f1() = true, f2() = true, f3() = true, f4() = true, f5() = false return 2
f1() = true, f2() = true, f3() = true, f4() = false, f5() = false return 3
..
..
Run Code Online (Sandbox Code Playgroud)
除了使用大量的嵌套if什么是干净的方式这样做?
额外细节:
这是我正在努力解决的问题的简化.基于一些像上面那样工作的函数,我试图确定一个由枚举表示的订单表单的状态.例如我正在做:IfCertainCondition1()和IfCertainCondition2()然后是OrderFormStatus.New,IfCertainCondition1()和NOT IfCertainCondiction2()然后是OrderFormStatus.SomethingElse.这样做有效,但因为有大量的条件,它会使非常重的嵌套if
您可以将它们组合成一个整数,整数中的每个位表示从一个方法返回的bool.
bool f1, f2, f3, f4, f5;
int combined = f1 ? 0x01 : 0 | f2 ? 0x02 : 0 | f3 ? 0x04 : 0 | f4 ? 0x08 : 0 | f5 ? 0x10 : 0;
return combined;
// or
int conversionTable[32] = { ... };
return conversionTable[combined];
Run Code Online (Sandbox Code Playgroud)