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产生影响.
Groovy似乎不需要分号,所以我认为你的代码被解释为:
return a;
&& b;
&& c;
Run Code Online (Sandbox Code Playgroud)
从文档:
Groovy使用与Java类似的语法,尽管在Groovy中分号是可选的.
这节省了一点点打字,但也使代码看起来更干净(令人惊讶的是这样一个小的改变).所以通常如果每行都有一个语句,你可以完全省略分号 - 尽管如果你愿意的话也可以使用它们.如果要在一行上放置多个语句,请使用分号分隔语句.