Javaの記法との違い
- JavaからGroovyへ移行する簡単なステップ - No Programming, No Life
- JavaのコードをGroovyらしく書き換えていく記事。とても分かりやすいです。
- The Apache Groovy programming language - Style guide
セミコロンが不要
セミコロンは1行に複数の内容を入れたい場合を除いて不要です。 Rubyと同じですね。
最後のreturnが不要
最後の値を返す場合は、returnキーワードが不要です。 これもRubyと同じですね。
デフォルトがpublic
パッケージプライベートが使いたい場合は、@PackageScope
アノテーションを使います。
GString
11. GStrings (interpolation, multiline)
${resource}
みたいな記法(bashとかと同じ)- シンプルな場合は
$resource
のようにカッコを省略可能。
- シンプルな場合は
${-> i}
とすると、遅延評価される(toString()が呼ばれたときに評価)。
型の指定はオプション
ただし、公開APIを提供するときは、型を使うことを推奨されます。 privateメソッドに使えるのが、Javaと比較したときの利点かなと。
Groovyの文法
変数定義
以下のどちらかの記法が使える。
String x
のように、Javaと同じ記法。def o
のように、型を指定しない記法。
多値代入
def (a, b, c) = [10, 20, 'foo']
のように、多値代入が可能。- 式の右側はArray記法です。
クロージャ
基本的にはRubyのブロックと同じとみなしていいっぽいですが、 パラメータの指定方法が違います。
- 区切り:
->
あとは変わらないかな。。。 (ほとんど使ったことないけど)
マップ
以下のような形式です。 JavaのLinkedHashMapが作られるようです。
[red: '#FF0000', green: '#00FF00', blue: '#0000FF']
9. Mapsを参照してください。
メソッド呼び出し
1.5.2. Named argumentsによれば、メソッド定義でパラメータがMap
で定義されている場合、名前付き引数のように呼び出せます。
foo(name: 'Marie', age: 1)
4.1. Optional parenthesesによれば、パラメータが1つ以上あって曖昧さがない場合は、()
を省略できます。
String
4. Stringsより。
- シングルクォート(
'
):java.lang.String
+
演算子で連結可能- トリプルシングルクォート(
'''
): 複数行可能