マニュアル: Groovy

投稿日: 更新日:

Javaの記法との違い

セミコロンが不要

1. No semicolons

セミコロンは1行に複数の内容を入れたい場合を除いて不要です。 Rubyと同じですね。

最後のreturnが不要

2. Return keyword optional

最後の値を返す場合は、returnキーワードが不要です。 これもRubyと同じですね。

デフォルトがpublic

4. Public by default

パッケージプライベートが使いたい場合は、@PackageScopeアノテーションを使います。

GString

11. GStrings (interpolation, multiline)

  • ${resource} みたいな記法(bashとかと同じ)
    • シンプルな場合は$resource のようにカッコを省略可能。
  • ${-> i} とすると、遅延評価される(toString()が呼ばれたときに評価)。

型の指定はオプション

21. Optional typing advice

ただし、公開APIを提供するときは、型を使うことを推奨されます。 privateメソッドに使えるのが、Javaと比較したときの利点かなと。

Groovyの文法

Semantics

変数定義

1.1. Variable definition

以下のどちらかの記法が使える。

  • String xのように、Javaと同じ記法。
  • def oのように、型を指定しない記法。

多値代入

1.2.1. Multiple assignment

  • def (a, b, c) = [10, 20, 'foo']のように、多値代入が可能。
    • 式の右側はArray記法です。

クロージャ

Closures

基本的には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
  • +演算子で連結可能
  • トリプルシングルクォート('''): 複数行可能