2012-04-17 102 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