2012-04-17 37 views
10

Trong Java tôi có thể làm điều này:Groovy vs Java cú pháp nhất quán

return a 
    && b 
    && c; 

Trong Groovy, nó sẽ trả về một lỗi biên dịch: unexpected token: &&. Nó cũng xảy ra nếu tôi bỏ qua từ khóa return trong Groovy. Tuy nhiên nếu tôi quấn câu lệnh trong dấu ngoặc đơn, nó hoạt động tốt.

Trong tất cả các tài nguyên Groovy tôi đã đọc, tôi đã được thông báo rằng tôi có thể viết "Java thẳng" ở bất kỳ nơi nào tôi muốn. Đây có phải là một lỗi? Nếu không, lý do cho quyết định thiết kế này là gì?

Tôi đã xem here, nhưng không tìm thấy vấn đề này được liệt kê. Tôi hiểu rằng có một số điều mà không thể được kế thừa từ Java, nhưng điều này dường như không phải là một trong những điều đó.

+0

+1 Đó là một câu hỏi rất thú vị, nhưng phần lớn là sở thích học tập. Trong thực tế, đây sẽ là một cách rất khác thường để viết một tuyên bố trả về –

+0

True, hầu hết các phần. Tôi muốn nói rằng có một số hiệu lực cho 'a',' b', và 'c' đủ xấu xí. –

Trả lời

22

Vấn đề là Groovy không yêu cầu rõ ràng dòng terminators - và return a trông giống như một tuyên bố hợp lệ ngày của riêng mình. Bạn có thể sử dụng:

return a && 
     b && 
     c; 

Hoặc sử dụng một dòng liên tục:

return a \ 
    && b \ 
    && c; 

Đó là không đúng là tất cả Java là hợp lệ Groovy. Trong khi hầu hết cú pháp Java được trình bày, đôi khi một tính năng của Groovy sẽ có tác động trên Java hợp lệ.

+0

Thú vị, cảm ơn. –

8

Groovy dường như không cần dấu chấm phẩy, vì vậy tôi nghĩ rằng mã của bạn đang được intepreted như:

return a; 
    && b; 
    && c; 

Từ 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

bạn có thể thực hiện gần như tất cả java trong groovy trừ khi bạn xem xét những điều sau đây.

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

nếu bạn muốn làm java thẳng thì bạn có thể làm điều đó trong một lớp java * và thả nó vào thư mục src.

+0

Tôi đã xem trang này và sự cố của tôi không được giải quyết ở đó. –

+2

loại nhảy múa xung quanh nó Những điều cần biết về Dấu chấm phẩy là tùy chọn. Sử dụng chúng nếu bạn thích (mặc dù bạn phải sử dụng chúng để đặt một số báo cáo trên một dòng). –

+0

Có, tôi đã biết rằng dấu chấm phẩy là tùy chọn ... điều này không hữu ích. Và sử dụng dấu chấm phẩy ở đây thậm chí không giải quyết được vấn đề. –

Các vấn đề liên quan