如何优雅的跳出多层循环?

查看 169|回复 4
作者:BIGBIG   
如何优雅的跳出多层循环?

现有一个数据清洗任务。有多层循环,如下伪代码。
我的问题是:当 cleanedCount 达到 1 百万条数据时,要停止整个清洗任务。难道要一层一层 return 出去么?

class CleanData{
  // 已清洗数据量
  cleanedCount ;
  // 迁移任务
  method cleanByTask() {
    activityIdList.foreach{activityId -> cleanByActivity(activityId)}
  }
  // 按活动
  method cleanByActivity(activityId) {
    tables.foreach{table -> cleanByTable(table)}
  }
  // 按表
  method cleanByTable(table) {
    timeSplits.foreach{timeSplit -> cleanByTimeSplit(timeSplit)}
  }
  
  // 按时间切片
  method cleanByTimeSplit(timeSplit) {
    每 500 条.foreach{500 条 -> cleanByCount(500 条)}
  }
  // 按数量
  method cleanByCount(500 条) {
    cleanedCount += 500
    if (cleanedCount >= 1000000) {
      reurn;
    }
  }
}

method, rea, timesplit, activityid

sockpuppet9527   
本身,引入一个状态机?或在 caller 那边做个状态?
chendy   
代码目测没啥问题
一层一层 reture 也没啥问题
难道楼主需要 System.exit(0) ?
elliottzhao87   
在外部放一个变量,检测变量直接在外层跳出呗?
xausky   
抛出个 Runtime 异常,最外层捕获处理,当然这个是旁门左道,正常还是多层 return 吧。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部