Monday, February 1, 2010
PropertyMissing の利用 (Groovy)
Map で key,value を設定したり呼び出したりしたい。 このとき通常であれば、以下のように使う。
def map = [:]
map.put( 'foo','bar' )
assert map.get('foo') == 'bar'
しかし、Groovyではもっと直感的にコードが書ける。 以下のように...
def map = [:]
map.foo = 'bar'
assert map.foo == 'bar'
自前のクラスでも使いたい場合→ PropertyMissingを使う
java.util.HashMap 等から継承したクラスを使えば、直感的な記述方法を使用できるのだが、 諸事情により java.util.HashMap 等を継承しないクラスでこの機能を使うには、 PropertyMissingを使えばよい。
詳しくはこちらを http://groovy.codehaus.org/Using+methodMissing+and+propertyMissing
class MyMap {
def map = [:]
def propertyMissing(String name) { map[name] }
def propertyMissing(String name, value) { map[name] = value }
}
def map = new MyMap()
map.foo = 'bar'
assert map.foo == 'bar'
この例では、MyMapクラス内の map へ値を渡したり、mapから値を取り出したりしているだけだが、 そうではなく、 データベースへのsave,loadの記述を書いておくなどすると結構便利です。
