2012-04-17 103 views
10

在Java中我可以这样做:的Groovy与Java语法差异

return a 
    && b 
    && c; 

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

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

我看了here,但没有找到此问题列出。我知道有一些东西不能从Java继承,但这似乎不是那些事情之一。

+0

+1这是一个非常有趣的问题,但主要是学术兴趣。在实践中,这将是一个非常不寻常的方式来写回报声明 – 2012-05-01 23:27:39

+0

真的,大部分。我认为'a','b'和'c'足够难看。 – 2012-05-01 23:35:21

回答

22

的问题是,Groovy不要求明确行终止符 - 和return a看起来像是一个有效的声明。你可以使用:

return a && 
     b && 
     c; 

或者使用续行:

return a \ 
    && b \ 
    && c; 

真实,所有的Java是有效的Groovy。尽管大多数Java语法都被覆盖了,但偶尔会有一个Groovy的特性会影响有效的Java。

+0

有趣,谢谢。 – 2012-04-17 19:54:54

8

Groovy中似乎并不需要分号,所以我觉得你的代码被intepreted像:

return a; 
    && b; 
    && c; 

the documentation

Groovy uses a similar syntax to Java although in Groovy semicolons are optional.

This saves a little typing but also makes code look much cleaner (surprisingly so for such a minor change). So normally if one statement is on each line you can ommit semicolons altogether - though its no problem to use them if you want to. If you want to put multiple statements on a line use a semicolon to separate the statements.

1

你可以在groovy中做几乎所有的java,除非你看下面的内容。

http://groovy.codehaus.org/Differences+from+Java

,如果你想要做直的Java,那么你可以做一个*的.java类,并把它放到src文件夹。

+0

我看过这个页面,我的问题没有在那里解决。 – 2012-04-17 20:12:11

+2

这是一种舞蹈 需要注意的事项 分号是可选的。如果你喜欢,可以使用它们(尽管你必须使用它们在一行上放置几条语句)。 – 2012-04-17 20:14:10

+0

是的,我已经知道分号是可选的......这没有帮助。在这里使用分号并不能解决问题。 – 2012-04-17 20:16:35