[英]How to create a macro on a condition inside a if statement
我需要迭代一个while
循环内嵌套的for
循环,以用于几种不同的条件。
每个语句的代码唯一的变化就是要应用的比较条件。
原来,我要复制粘贴所有代码多次,并更改大号(小于)符号的方向。
例如:
if (direction.horizontal == UIScrollDirectionLeft) {
int column = startColumn+1;
while (column < maxAllowed) {
for (int row = minRow; row < maxRow; row++) {
repeated code
}
column++;
} else {
int column = minColumn -1;
while (column >= 0) {
for (int row = minRow; row < maxRow; row++) {
repeated code
}
column--;
}
}
是否可以为条件运算符创建宏以促进代码重用?
我真的很想要看起来像这样的东西:
int startColumn = (direction.horizontal == UIScrollDirectionLeft) ? (startColumn+1) : minColumn -1;
SignOfOperator theSignInTheWhile = (direction.horizontal == UIScrollDirectionLeft) ? "<" : ">=";
int conditionToTestInWhile = (direction.horizontal == UIScrollDirectionLeft) ? maxAllowed : 0;
while(startColumn,theSignInTheWhile,conditionToTestInWhile) {
// repeated code
}
我还有另外4种情况,例如上述一种情况...
您只需要循环代码一次。 只需更改步长值和终止值即可。 例如:
int start_column, end_column, column_step;
:
switch (direction.horizontal) {
case UIScrollDirectionLeft:
column = start_column + 1;
column_step = 1;
end_column = max_allowed;
break;
case UIScrollDirectionRight:
column = min_column - 1;
column_step = -1;
end_column = -1;
break;
:
}
while (column != end_column) {
for (int row = minRow; row < maxRow; row++) {
repeated_code();
}
column += column_step;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.