Groovy与Java语法差异

Tra*_*ebb 11 java syntax groovy

在Java中我可以这样做:

return a
    && b
    && c;
Run Code Online (Sandbox Code Playgroud)

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

在我读过的所有Groovy资源中,我被告知我应该能够在任何我想要的地方编写"直接Java".这是一个错误吗?如果没有,这个设计决定的原因是什么?

我看了这里,但没有找到这个问题.我知道有一些东西不能从Java继承,但这看起来不像是其中之一.

Jon*_*eet 23

问题是Groovy不需要显式行终止符 - 并且return a它本身看起来像一个有效的语句.你可以使用:

return a &&
       b &&
       c;
Run Code Online (Sandbox Code Playgroud)

或者使用续行:

return a \
    && b \
    && c;
Run Code Online (Sandbox Code Playgroud)

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


Rei*_*ica 8

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

return a;
    && b;
    && c;
Run Code Online (Sandbox Code Playgroud)

文档:

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

这节省了一点点打字,但也使代码看起来更干净(令人惊讶的是这样一个小的改变).所以通常如果每行都有一个语句,你可以完全省略分号 - 尽管如果你愿意的话也可以使用它们.如果要在一行上放置多个语句,请使用分号分隔语句.