繁体   English   中英

如何在if语句中的条件上创建宏

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM