grails - 与三元和猫王的混淆

标签 grails groovy

我有以下代码用于在查找返回 null 时处理默认值

def user = User.find('admin') 
    return user?.address?user:null 

这按预期工作

但是当使用 Elvis 运算符时,例如:

def user = User.find('admin') 
    return user?.address?:null 

我抛出异常:

org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'true'         with class 'java.lang.Boolean' to class 'com.code.User' 

我期望 Elvis 的行为与三元运算符完全相同......?

谢谢!

最佳答案

如果用户不为 null 并且 user.address 计算结果为 true,则返回 user:

return user?.address?user:null 

如果用户不为 null 并且 user.address 计算结果为 true,则返回 user.address

return user?.address?:null 

我假设user.address是一个 bool 值?因此,第二个尝试可能从您所说的在定义中返回 User 的方法返回 bool 值

关于grails - 与三元和猫王的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12004738/

相关文章:

groovy - GGTS 无法运行 Groovy Shell

maven - Unresolved 依赖项Grails 2.3

grails - 如何知道选择了哪个复选框

hibernate - 使用GORM进行多次链式保存

grails - Grails初学者问题 “Failed to invoke Servlet 2.5”

groovy - 如何转储用于构建的所有gradle值

grails - Grails-无法创建类[QuartzGrailsPlugin]的新实例!

grails - 更新cron作业的触发器

gradle - 使用Kotlin DSL在Gradle构建脚本中配置swagger

java - 使用正则表达式同时强制执行序列和分组?