我有以下代码用于在查找返回 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/