2

当查找返回 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' 

我期待猫王的行为与三元运算符完全一样......?

谢谢!

4

2 回答 2

4

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

return user?.address?user:null 

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

return user?.address?:null 

我假设user.address是一个布尔值?所以第二个尝试返回一个布尔值,可能是你说的User在定义中返回 a 的方法

于 2012-08-17T11:21:02.290 回答
0

问题是当你使用

user?.address?user:null

如果用户有地址,则返回用户。当你使用

user?.address?:null 

它尝试返回地址但不返回用户实例。

于 2012-08-17T11:43:01.263 回答