看来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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。