2011-02-09 7 views
15

これは、パラメータをとるメソッド呼び出しでかっこを使用する必要があるかどうかについて、かなり一般的な質問です。 すなわちgroovy:メソッド呼び出しで大括弧を使用するかどうか?

def someFunc(def p) { 
... 
} 

、その後の呼び出し:

someFunc "abc" 

対...

someFunc("abc") 

は、これは一貫性の問題だけですか、それぞれの具体的な使用例はありますか?

答えて

18

これは主に一貫性と可読性の問題ですが、Groovyは必ずかっこを省略することはできません。一つは、ネストされたメソッドの呼び出しに括弧を省略することはできません。

def foo(n) { n } 
println foo 1 // won't work 

Style guideに「Omitting parentheses」の項を参照してください。

3

特定の場合は削除する必要はありませんが、いつでも使用できます。それらを放置するのはちょっときれいです。
あなたはそれを行うことができない場合があります(リスト/マップパラメータとサブスクリプトオペレータ、入れ子になった呼び出し、または文が割り当てであると混乱させる可能性があります)が、一般的なルールは、あいまいさがなければ括弧を使用できません。
あなたが
http://groovyconsole.appspot.com/script/355001

+0

OKですときにそれらを省略することができ奨励しているように私には思えるので、これはその後、拡張性のポイントだろうか? ifとloopで開閉中括弧を使用していない人たちの古い問題のように?つまり、誰かが後で追加する必要がある場合は、常に角括弧を使用する必要があります。 – Steven

+0

私はあなたのポイントを得るかどうかわかりませんが、 'foo 'x"の代わりに 'foo(' x ')'の代わりに ' println foo( 'x') 'それらを残しておき、' foo 'x' 'を使い、必要なときだけかっこを追加します。 – jpertino

1

"an empty pair of parentheses is just useless syntactical noise!"でそれらをチェックアウトすることができ、 のGroovy 1.8は、括弧を省略しても、より多くのケースをできるようになります(私はポストがその情報にすでに存在しているという通知を受け取ったとして、いくつかの行を削除)

彼らが目的を果たしたときに括弧を使用しますが、彼らは単に「ノイズ」

関連する問題