Shorthand way for assigning object properties in G

2020-06-08 01:19发布

I create Groovy objects using this convention...

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

...is there a shorthand convention for manipulating properties object? something like this...

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

...instead of...

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

3条回答
虎瘦雄心在
2楼-- · 2020-06-08 02:03

I prefer item1.with if I have concrete variables to change

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

I prefer InvokerHelper.setProperties when I have map of properties (can be any size)

@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"

Output:

before: Item(foo, 150)
after : Item(abc, 22)
查看更多
贼婆χ
3楼-- · 2020-06-08 02:13

You have the with method, as described by the great Mr Haki

item1.with{
    name = "hello"
    weight = "175"
}
查看更多
孤傲高冷的网名
4楼-- · 2020-06-08 02:18

Yes, you can do it like this:

item1.metaClass.setProperties(item1, [name: "hello", weight: "175"])
查看更多
登录 后发表回答