grails - 我如何在 Groovy 中简化这段设置对象属性(如果它们为空)的代码?

标签 grails groovy

如果属性不为空,我将使用 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"
}

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

product.Name = product.Name ?: "Default Product"
product.Price = product.Price ?: 5
product.Type = product.Type = "Shampoo"

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

product {
    Name = product.Name ?: "Default Product",
    Price = product.Price ?: 5,
    Type = product.Type ?: "Shampoo"
}

你们会推荐我做什么?

最佳答案

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

product.with {
    Name = Name ?: "Default Produce"
    Price = Price ?: 5
    Type = Type ?: "Shampoo"
}

关于grails - 我如何在 Groovy 中简化这段设置对象属性(如果它们为空)的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640457/

相关文章:

java - 如何检查 Gradle CopySpec 是否将其导出为文本表示形式?

groovy - 依赖于扩展对象的任务的 Gradle 插件最佳实践

groovy - 在gradle依赖中指定ivy配置

grails - Grails可搜索插件和GORM编码

grails - 如何永久保存数据?

url - GRAILS URL参数的简短格式

plugins - Grails Maven依赖解析

url - 接受来自Grails中某些URL的调用

angularjs - 如何从 Grails 插件提供的 JS 文件中指向 AngularJS 模板?

grails - Grails应用程序加载需要很长时间?