Golf.with{ Groovy(0) }
ゴルフ向け機能のまとめ。
- GString
「 "${式}" 」が基本だが,単なるメンバアクセスの場合は {} が要らない。
// echo.groovy (17) print"$System.in"
しかもなにやら怪しげな挙動。なぜこれで成立するのか謎。
- spread
// transposeLines.groovy (67) System.in.readLines()*.toList().transpose().each{println it.join()}
地味に活躍。
- Range
// primeNumbers.groovy (86) p=(2..541).findAll{i->!(2..<i).any{i%it<1}} "$System.in".toLong().times{println p[it]}
「 ..< 」だと終端を含まない。Rubyの「 ... 」より分かりやすい。
- cast
かなり自在に変換できる。
というか,型の融通が利かないことが多い*1ので変換せざるを得ない。
(int[])'abc' // => [97, 98, 99] 'abc'as List // => ["a", "b", "c"]
「 (List)'abc' 」はエラー。優先順位も違うので随時使い分ける。
- accessor
new Date().with{ it.time *= 2; it } // => Wed Apr 25 20:30:18 JST 2046
Rhinoと同じ。「 hoge.getFuga() 」は「 hoge.fuga 」,「 hoge.setPiyo(x) 」は「 hoge.piyo = x 」と書ける。
- it
I = { it }