タグ

ブックマーク / npnl.hatenablog.jp (5)

  • Groovy v1.8.1とv1.9-beta-1の新機能をサクっと紹介するよ - No Programming, No Life

    このシリーズの一覧はこちら はじめに 2011-07-21にGroovy v1.8.1とv1.9-beta-1が同時リリースされたようなので、その新機能の一部をサクっと紹介します。 1. プリミティブ型演算のパフォーマンス最適化 割愛*1 2. ストリーミングビルダー(StreamingJsonBuilder) StreamingJsonBuilder (Groovy 1.8.6) JSONペイロードを直接writerに書き出したいとき(そして出力前にデータ構造を修正する必要がないとき)に使えるらしいです。ここでは動作確認としてv1.9-beta-1を利用しました。 import groovy.json.StreamingJsonBuilder import groovy.json.JsonOutput new StringWriter().with { w -> def json = n

    Groovy v1.8.1とv1.9-beta-1の新機能をサクっと紹介するよ - No Programming, No Life
    nbqx69
    nbqx69 2011/08/19
    1.9
  • Groovyなら1行でできる97のこと - No Programming, No Life

    タイトルはまぁあれですが、Groovyって結構ワンライナーで出来ちゃうことが多いよねということで、みんなで97個(+αそれ以上)の一覧を作っちゃいませんか?という企画です。 以前jggugで行われていたg100ponみたいな感じでできたらいいなと思ったので、Google Docsのスプレッドシートで共有してありますので、こんなのあるよ!というのがあったらみなさんでどんどん追加して行っちゃって下さい。よろしくお願いします。 97 Things Groovy can runs by one liner http://bit.ly/97_Things_Groovy_can_runs_by_one_liner ※Twitterでつぶやく際はハッシュタグ (#groovy97oneliner) でお願いします。 ※ちなみに、順番はあとで並べ替える可能性があります。 参考リンク プログラマが知るべ

    Groovyなら1行でできる97のこと - No Programming, No Life
  • Groovyでクロージャを期待するメソッド呼び出し時の挙動について - No Programming, No Life

    はじめに (10..1e4).grep(~(9..0).sum{"$it?"}).any''.&println anarchy golf - the source code を見ていたら見つけたのですが、Groovyってクロージャを引数として期待しているメソッドにクロージャインスタンスを渡した場合は自動でうまい感じに動くんですね。 文章で書くよりも例を見た方が分かりやすいと思うので、下をどうぞ。 例1:1〜10までprintする (1..10).each(Object.&print) 結果 12345678910 例2:文字列終端判断 ['ga', 'gi', 'gu', 'ge', 'go'].collect('hoge'.&endsWith) 結果 [false, false, false, true, false] 例3:文字列インデックス判断 def fox = 'The quic

    Groovyでクロージャを期待するメソッド呼び出し時の挙動について - No Programming, No Life
  • GroovyでBuilder系の定義ファイルの外出しする - No Programming, No Life

    はじめに GroovyはほにゃららBuilderが充実していますが、ちょっとだけ不満点を挙げるとしたらそれはコードに直接埋め込まなければいけないことではないだろうか。 new HogeBuilder().aaa { bbb (ccc: 'ddd') { eee() { . . . } } } こんな感じに。 そこで このBuilder定義部分*1を別ファイルなどに外出しにできないか?と思って、色々試してみたところできました。以下にソースを載せます。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) サンプルとして前に書いたMarkupBuilderでHTML生成を試してみた - No Programming, No Lifeで利用したソースを改造しました。 markup.groovy import groovy.xml.MarkupBuilde

    GroovyでBuilder系の定義ファイルの外出しする - No Programming, No Life
  • Groovyでクロージャ内部で設定してもらった値を利用する - No Programming, No Life

    はじめに クロージャ(groovy.lang.Closure)を引数にとって、途中の処理を委譲するようなメソッドを定義し、呼び出し時にブロックのように呼び出すことはGroovyでは普通に行われます。 ただ、通常では#callメソッドに渡す引数がクロージャ内で -> の前に列挙した変数として受け取れるといった使い方くらいしかしないと思うのですが、ちょっと工夫することで、色々できることが分かりました。以下実験したソースを載せます。 ソース (動作確認: Groovy Version: 1.7.5 JVM: 1.6.0_20) localValsという一時変数オブジェクトを生成して、そこへの参照でクロージャのdelegateを書き換えます。すると、クロージャ内部から一時変数オブジェクトのスコープが覗けるようになり、ここで定義してあるmapやthatなどにアクセスできるようになるという仕組み。 実

    Groovyでクロージャ内部で設定してもらった値を利用する - No Programming, No Life
  • 1