読者です 読者をやめる 読者になる 読者になる

No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

GroovyでTemplateEngineとbinding

Groovy TemplateEngine

via twitter4j+Groovyテンプレートエンジンを試しに使ってみた。 - けみかるGroovy日記 - はてなGroovyグループ by けみかるさん(id:tmftake)

以下の部分が、LinkedHashMapをbingdingクラスにキャストできないよーと怒られてました。
binding = ["statuses": statuses]

これですが、ちょっと調べてみたら

Caught: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to groovy.lang.Binding

ってExceptionが発生するみたいですね。

groovy.lang.Binding

これはたぶん、classで囲まない.groovyファイルなんでgroovy.lang.Scriptを継承したクラスが勝手に自動生成されるんですがその際の引数の名前がbindingっていうのがあるのでそれかと思います。
動的に文字列をGroovy Scriptとして動作させるときの機構です。

ということで、結論としては

予約語みたいなもん!」ってことでしょうか

defを使うと、ローカル変数として宣言されるため、それが隠されるのでエラーにならないと勝手に解釈。