Yokohama.groovy #4 を開催してきた #yokohamagroovy
- 20120918 vol.04 · yokohamagroovy/support Wiki
- 2012/09/18 Yokohama.groovy #4 #yokohamagroovy - Togetter
開催されているのは9/18ですがこれを書いているのは大分日が経ってからの事。うぅイカンイカン(^_^;)
開催会場はこれまで通り横浜タネマキ。
写経・実践
この日実践した範囲は『3.7 コレクション型』(P.80)から『演算子オーバーロード』の辺りまで。
全般的に参照したのはこの辺りのエントリ。
- [http://d.hatena.ne.jp/nemo_kaz/20120320:title=(Groovy)マイ・コーディング・チートシート - nemo_kazのメモ [Groovyライフ]]
- Groovyのチートシート - No Programming, No Life
- Groovyで頻出なコードの書き方のチートシート - No Programming, No Life
リスト
def list = [11,22,33,44,55] assert list.equals([11,22,33,44,55]) // 等しい事を確認 assert list.first() == 11 // first:最初の要素を取得 assert list.getAt(2) == 33 // getAt:指定位置の要素を取得 assert list.head() == 11 // head:最初の要素を取得 assert list.last() == 55 // last:最後の要素を取得 assert ["A","B","C","D","E"].minus(["A","C","D"]) == ["B","E"] // minus:指定要素を削除 assert [1,2,3].pop() == 3 // pop:リストの最後の要素を取得(リストからは削除される) def listnum = [10, 20, 30] listnum.push(40) // push:リストの最後に指定要素を追加 assert listnum == [10, 20, 30, 40] assert ["ひ", "ら", "な", "べ"].reverse() != ["ひ", "ら", "な", "べ"] // reverse:要素を逆順にしたリストを作成(XP祭り2012名言) assert ["ひ", "ら", "な", "べ"].reverse() == ["べ", "な", "ら", "ひ"] // reverse:要素を逆順にしたリストを作成(XP祭り2012名言) assert [31, 32, 33].tail() == [32, 33] // tail:リストの最初の要素以外を取得
コレクション
参考ページはこちら。
package main.java /** * Created with IntelliJ IDEA. * User: shinyaa31 * Date: 12/09/29 * Time: 10:12 * To change this template use File | Settings | File Templates. */ println(2) def list = [1, 2, 3] assert list.containsAll([1, 2, 3]) // containsAll:指定要素が全て含まれているかを確認 assert list.contains(2) // contains:指定要素が含まれているかを確認 assert ['上','上','下','下','左','右','左','右','B','A'].count('右') == 2 // count:指定要素の件数確認 // find:見つからない場合Nullが返ってくる。見つかった場合オブジェクトが返ってくる。 assert (1..20).find { it % 3 == 0 } == 3 // クロージャがtrueを返す最初の要素 assert (1..20).findAll { it % 3 == 0 } == [3,6,9,12,15,18] // クロージャがtrueを返す全ての要素 // flatten:入れ子になったリストを平坦化(ツリー構造要素から要素一覧を取得する時等に使える) assert [1,2,3,4,5] == [1,[2,3],[[4]],[],5].flatten() // groupBy:クロージャで指定された条件で要素をグループ化し、Mapを返す assert [0:[2,4,6], 1:[1,3,5]] == [1,2,3,4,5,6].groupBy { it % 2 } // intersect:Collection要素同士の重複抽出 assert [1,2,3,4,5].intersect([3,4,5,6,7]) == [3,4,5] // join:Collectionの各要素を指定区切り文字列で連結 assert ["2012","9","28"].join("/") == "2012/9/28" // max,min:最大値、最小値を返す assert [1,100,10000].max() == 10000 assert [1,100,10000].min() == 1 // plus:コレクション同士を連結 assert [1,2,3].plus([4,5,6]) == [1,2,3,4,5,6] // sort:要素のソート assert [9,4,10,3,3,2].sort() == [2,3,3,4,9,10] // sum:要素の合計 assert [10,20,30,40,50,60,70,80,90,100].sum() == 550 // unique:重複削除 assert [10,20,30,20,30,10,30].unique() == [10,20,30]
sortやuniqueについては以下のエントリ等もとても参考になります。
GExcelAPI
リストやコレクションについて進めていく過程で、GExcelAPIというものがGroovyのこれらの機能を利用している・勉強になるという話に。
Map
書籍ではそこまで言及されていないGroovyとMapの関連ですが、この回でもそんなに言及は無し。
Mapではあるが、プロパティのアクセスなどについてはJavaBeansと同じような形でアクセス出来る事は少し前に別の写経でも触れた。