我会通过示例来解释:
Elvis操作符(?: )
"Elvis操作符"是Java三元运算符的缩写。其中一个方便的实例是,如果表达式解析为false或null,则返回“合理默认值”。一个简单的示例可能如下所示:
def gender = user.male ? "male" : "female" //traditional ternary operator usage
def displayName = user.name ?: "Anonymous" //more compact Elvis operator
安全导航运算符(?.)
安全导航运算符用于避免空指针异常。通常情况下,当您引用一个对象时,您可能需要在访问对象的方法或属性之前验证它不为空。为了避免这种情况,安全导航运算符将简单地返回null而不是抛出异常,如下所示:
def user = User.find( "admin" ) //this might be null if 'admin' does not exist
def streetName = user?.address?.street //streetName will be null if user or user.address is null - no NPE thrown
??
)的文档链接吗?到目前为止,我找到的所有内容都表明JS仅具有“falsey”合并(使用||
)。 - Charles Wood??
时,那是一个打字错误 :D - Charles Wood