这种情况除了嵌套一堆if,还有什么方法?
- C/C++ code
void do_something(float x, float y, float z){}
我需要在x、y、z大于、等于、小于零的时候,做某种操作,共有3X3X3=27种情况。目前使用一堆ifelse,有没有更高效的方法?
[解决办法]
如果要做27种操作的话,应该就规规矩矩的用IF吧。。。
[解决办法]
如果27种状态下要做不同的事情,那好像没什么好办法~~仔细分析下逻辑吧,看看有没有可以合并的。
或者多几个函数出来
- C/C++ code
void do_something(float x, float y, float z){ if(x>0) do_something_x_positive(y,z); else if(x<0) do_something_y_minus(y,z); else do_something_y_zero(y,z);}
[解决办法]
下面的代码帮你建了一个映射关系,随后你用关于flag的switch或者是数组什么的都很整齐方便了。
- C/C++ code
int flag = 0;if(x < 0){ flag |= 1 << 0;}else if(x > 0){ flag |= 2 << 0;}if(y < 0){ flag |= 1 << 2;}else if(y > 0){ flag |= 2 << 2;}if(z < 0){ flag |= 1 << 4;}else if(z > 0){ flag |= 2 << 4;}
[解决办法]
只能是if else
条件太多了!!