2011-12-14 8 views
11

私はGroovyでオブジェクトのプロパティを割り当てる簡単な方法は?

Item item1 = new Item(name: "foo", weight: "150") 

...この規則を使用してGroovyのオブジェクトを作成する...プロパティは、オブジェクトの操作のための速記規則はありますか?このような何か...

item1(name: "hello", weight: "175") //this does not work, btw ;-) 

...代わりに...

item1.name = "hello" 
item1.weight = "175" 

答えて

17

あなたはwithメソッドを持って、as described by the great Mr Haki

item1.with{ 
    name = "hello" 
    weight = "175" 
} 
+0

甘い、ありがとう...柊さんは神ですか? – raffian

+0

GroovyとGrailsユーザーのための@RaffiM、彼は素晴らしいです。 (彼のブログは素晴らしいです) – Grooveek

3

はい、あなたはこのようにそれを行うことができます:

item1.metaClass.setProperties(item1, [name: "hello", weight: "175"]) 
+0

あなたは '[name:" hello "、weight:" 175 "]のような何かをすることもできます。それぞれ{item1 [it.key] = it.value}' ' setAt' mehodまたは '[name:" hello "、weight:" 175 "]。それぞれ{item1.setProperty it.key、it.value}'です。 – epidemian

1

は私が

item1.with { 
    name = "lalal" 
    weight = 86 
    high = 100 
} 

を変更するための具体的な変数を持っている場合、私はプロパティのマップ(任意のサイズにすることができます)

@ToString 
class Item{ 
    def name 
    def weight 
} 
Item item1 = new Item(name: "foo", weight: "150") 

println "before: $item1" 
use(InvokerHelper) { 
    item1.setProperties weight: 22, name: "abc" 
} 
println "after : $item1" 

出力を持っているとき、私はInvokerHelper.setPropertiesを好む item1.with を好みます:

before: Item(foo, 150) 
after : Item(abc, 22) 
関連する問題