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