加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Groovy闭包中模拟“继续”的最佳模式

发布时间:2020-12-14 16:40:38 所属栏目:大数据 来源:网络整理
导读:看来Groovy不支持断点并从闭包内继续。什么是模拟这个的最好的方法? revs.eachLine { line - if (line ==~ /-{28}/) { // continue to next line... }} 解决方法 你只能支持继续干净,不要打破。特别是像每个线路和每个东西。无法支持断点与如何评估这些方
看来Groovy不支持断点并从闭包内继续。什么是模拟这个的最好的方法?

revs.eachLine { line -> 
    if (line ==~ /-{28}/) {
            // continue to next line...
    }

}

解决方法

你只能支持继续干净,不要打破。特别是像每个线路和每个东西。无法支持断点与如何评估这些方法有关,没有考虑没有完成可以传递给该方法的循环。以下是如何支持继续 –

最好的方法(假设你不需要结果值)。

revs.eachLine { line -> 
    if (line ==~ /-{28}/) {
        return // returns from the closure
    }
}

如果你的样本真的那么简单,这是有益于可读性。

revs.eachLine { line -> 
    if (!(line ==~ /-{28}/)) {
        // do what you would normally do
    }
}

另一个选项,模拟继续在字节码级别通常做什么。

revs.eachLine { line -> 
    while (true) {
        if (line ==~ /-{28}/) {
            break
        }
        // rest of normal code
        break
    }

}

支持break的一种可能方式是通过异常:

try {
    revs.eachLine { line -> 
        if (line ==~ /-{28}/) {
            throw new Exception("Break")
        }
    }
} catch (Exception e) { } // just drop the exception

您可能想要使用自定义异常类型,以避免掩盖其他真实异常,特别是如果您在该类中有其他可能抛出真正异常的处理,如NumberFormatExceptions或IOExceptions。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读