我有以下内容:
if (params.query?.equals(g.message(code: "layouts.main.search"))) {
params.query = ""
}
'?' 是什么意思?部分做什么?
我有以下内容:
if (params.query?.equals(g.message(code: "layouts.main.search"))) {
params.query = ""
}
'?' 是什么意思?部分做什么?
它是一个安全导航运算符,它返回空值而不是抛出 NullPointerExceptions。
检查 Groovy 中可用的运算符
http://docs.groovy-lang.org/latest/html/documentation/index.html#_safe_navigation_operator
来自 groovy.org
安全导航运算符 (?.) 安全导航运算符用于避免 NullPointerException。通常,当您有一个对象的引用时,您可能需要在访问该对象的方法或属性之前验证它不为空。为避免这种情况,安全导航运算符将简单地返回 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
这里解释一下?操作员:
http://groovy.codehaus.org/Operators#Operators-SafeNavigationOperator
在你的情况下?运算符保护空对象上的方法调用“等于”,例如在参数列表中找不到查询参数。