java - 在 Groovy 中强制显式返回语句,尤其是基于 RxJava 的代码?

标签 java groovy return rx-java

我已经多次被 Groovy 中的隐式 return 语句烧毁,尤其是 RxJava。是否有声明或设置将使 Groovy 处于一种模式,在这种模式下,通过隐式 return 语句返回的任何值都将被忽略(不返回)?

在 Groovy 中,当使用 Reactive Extensions 时忘记返回一个 Observable 会导致难以调试的“僵尸”情况,在这种情况下,序列会在看似很小的更改后停止发出值。

另一个困难的调试情况是通过删除一个在 explicit-return 语言中无害的语句,不小心放在运算符闭包或某些必须返回可观察对象的方法的末尾,现在由于新语句阻塞了先前语句中所需的 Observable 返回值,因此无意中返回了一些其他类型,从而破坏了 Observable 序列。

这不是吹毛求疵。我已经浪费了很多时间来寻找如果只有显式返回语句返回值就永远不会发生的问题。我认为 Groovy 是一种强大的语言,我真的没有时间重写我正在使用 Java 工作的 Groovy 代码库来获得我想要的东西。所以我希望有一个 Groovy 设置可以满足我的要求。

最佳答案

Is there a declaration or setting that will put Groovy in a mode where any values returned via an implicit return statement will be ignored (not returned)?

不,没有。您可以编写一个 AST 转换来强加您喜欢的任何规则,并且您可以使用像 codenarc 这样的静态分析工具来提示没有显式返回的非 void 方法,但是所问问题的答案是“否”。

关于java - 在 Groovy 中强制显式返回语句,尤其是基于 RxJava 的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47125970/

相关文章:

java - 使用 nameFilters 排除特定类型的项目

java - 如何进入下一次迭代

jenkins - 执行Jenkinsfile时如何获取管道配置字段 'Script Path'?

multithreading - 任务数量未知的多线程

javascript - JS : How to change variable in function (IIFE)

javascript - window.onload 返回一个函数

java - Spring数据-根据先前的插入插入数据

javascript - 打印时调整 Google map 大小

jenkins - 指定的代理类型 "call"无效。必须是 [any, docker, dockerfile, kubernetes, label, none] 之一

java - 如何使用 return true 语句创建 boolean 方法