回答:
私はこのゴルフのこと全体に新しいです、これは私がこれまでに得たものです:
機能ではなくクロージャーを使用します。
def a(b){print b}
より長い
a = {印刷する}
配列およびリストで負のインデックスをsize()-のエイリアスとして使用できます
c = "abc" d = ["a"、 "b"、 "c"] assert c [c.size()-1] == c [-1] assert c [c.size()-2] == c [-2] assert d [d.size()-1] == d [-1] assert d.last()== d [-1]
スプレッド演算子はcollectのショートカットです:
assert d * .size()== d.collect {it.size()}
並べ替えには、宇宙船演算子を使用します。
e = [54,5,12]
assert e.sort{a,b->a<=>b}==e.sort{a,b->a<b?-1:+1}
assert e.sort{a,b->a<=>b}==e.sort{a,b->if (a>b) {return(-1)} else {return(+1)}}
コンバージョンの編集:
assert "123" as int == "123".toInteger()
*.X
、拡散演算子が多いように記述することができます.X
オブジェクトのリストから配列を取得する
次のようなオブジェクトのリストがある場合:
def users = [[user:'A',id:1],[user:'B',id:2],[user:'C',id:3]]
次を使用して、特定のプロパティを持つArrayListを生成できます。
def userIds = users*.id // [1, 2, 3] no explicit loops!
ボーナス:Groovy ... on Rails!
さて、Grailsフレームワークで複数の属性を持つselectから多くの値を取得する必要があります。ループを使用したり、フラット化したり、他のより一般的な構造をプログラミングしたりできますが、いくつかの行を節約できます。次のような選択がある場合:
<select id="users" multiple="true" name="users">
<option value="193">User A</option>
<option value="378">User B</option>
<option value="377">User C</option>
</select><%-- No Grails tags for now --%>
次に、コントローラーで次のように簡単に記述できます。
def aListOfUsers = User.getAll(params.list('userIds'))