演算子あれこれ

記号なのでググってもなかなか見つからないのよね・・

// 単なる配列
list = [1,2,3]

// 空配列
emptyList = []

// 空Map
emptyMap = [:]

// エルビス演算子(と言われているみたい)
newList = [] ?: list // => [1,2,3]
newList = null ?: list // => [1,2,3]
newList = [1] ?: list // => [1]

// 要するに
newList = term1 ? term1 : term2

// 自動引数it
list.each{ println it} // 1 2 3
list.each{ e -> println e} // 1 2 3

// クラス定義
class C
{
  def s
  C(s)
  {
    this.s = s
  }
}

// オブジェクト
c1 = new C("obj1")
c2 = new C("obj2")
c3 = new C("obj3")

// 配列内のオブジェクトのそれぞれのプロパティを配列にする
[c1,c2,c3]*.s.each{ println it } // obj1 obj2 obj3

// nullチェック付きプロパティ参照
c4 = null
s = c1?.s // "obj1"
s = c4?.s // null

もっと役立つチートシートhttp://npnl.hatenablog.jp/entry/20081224/1230124652