如何在Groovy中简化此代码,如果它们为null,则在对象上设置属性?

Dan*_* T. 3 grails groovy

如果属性不为null,我正在使用Grails在域类上设置属性.目前,代码看起来像这样:

def product = Product.getById(5);

if (!product.Name) {
    product.Name = "Default Product"
}
if (!product.Price) {
    product.Price = 5;
}
if (!product.Type) {
    product.Type = "Shampoo"
}
Run Code Online (Sandbox Code Playgroud)

在Groovy中实现此代码块的更好方法是什么?我设法将其简化为:

product.Name = product.Name ?: "Default Product"
product.Price = product.Price ?: 5
product.Type = product.Type = "Shampoo"
Run Code Online (Sandbox Code Playgroud)

但我希望能够做这样的事情(不是有效的代码):

product {
    Name = product.Name ?: "Default Product",
    Price = product.Price ?: 5,
    Type = product.Type ?: "Shampoo"
}
Run Code Online (Sandbox Code Playgroud)

你们会推荐我做什么?

sch*_*159 5

with上一个示例中使用方法调用:

product.with {
    Name = Name ?: "Default Produce"
    Price = Price ?: 5
    Type = Type ?: "Shampoo"
}
Run Code Online (Sandbox Code Playgroud)