如何根据布尔值选择for循环的增量,我试图做这样的事情:
for (int y = iniY; isdown? (y >= endY): (y <= iniY+dy) ; isdown? --y:y++);
for循环接受终止但不接受增量...
我目前的工作代码是这样的:
if(isdown)
for (int y = iniY; y >= endY; --y) {
code lines...
}
else
for (int y = iniY; y <= iniY+dy; ++y) {
code lines...
}
代码无法提取到新方法,因为它适用于许多变量...
答案 0 :(得分:1)
与minitech的解决方案类似,但在循环内没有分支。
int end = isdown ? iniY - endY : dy;
int direction = isdown ? -1 : +1;
for(int i = 0; i <= end; i++) {
int y = iniY + direction * i;
…
}
答案 1 :(得分:0)
for(initialization;condition; increment/decrement){}
如果condition
循环的for
部分失败,那么increment
部分将无效。
答案 2 :(得分:0)
我会这样做:
int end = isdown ? iniY - endY : dy;
for(int i = 0; i <= end; i++) {
int y = isdown ? iniY - i : iniY + i;
…
}
也就是说,找出差异并循环。它更容易理解。
答案 3 :(得分:0)
我会说你的代码中有一股很大的气味。我会专注于重构你的代码,而不是试图破解这个特定的位来使它工作。如果代码依赖于许多变量来喷射到提取的方法中,那么设计中的某些东西似乎是错误的。