在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。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |