Groovy 与 Java 语法差异

2022-09-04 06:02:44

在Java中,我可以这样做:

return a
    && b
    && c;

在Groovy中,它返回编译错误:。如果我在Groovy中省略关键字,也会发生这种情况。但是,如果我将语句括在括号中,它就可以正常工作。unexpected token: &&return

在我读过的所有Groovy资源中,我都被告知我应该能够在任何我想写的地方写“直接Java”。这是一个错误吗?如果不是,那么做出这个设计决策的原因是什么?

我看了看这里,但没有发现这个问题列出。我知道有些东西不能从Java继承,但这似乎不是其中之一。


答案 1

问题在于Groovy不需要显式的行终止符 - 并且看起来本身就是一个有效的语句。您可以使用:return a

return a &&
       b &&
       c;

或者使用行延续:

return a \
    && b \
    && c;

并不是所有的Java都是有效的Groovy。虽然涵盖了大多数Java语法,但Groovy的一个功能偶尔会对有效的Java产生影响。


答案 2

Groovy似乎不需要分号,所以我认为你的代码被理解为:

return a;
    && b;
    && c;

文档中

Groovy使用与Java类似的语法,尽管在Groovy中分号是可选的。

这节省了一点打字时间,但也使代码看起来更干净(令人惊讶的是,对于如此小的更改)。因此,通常如果每行都有一个语句,则可以完全省略分号 - 尽管如果您愿意,使用它们没有问题。如果要将多个语句放在一行上,请使用分号分隔这些语句。