-2

私は次のものを持っています:

if (params.query?.equals(g.message(code: "layouts.main.search"))) {
  params.query = ""
}

「?」は何を意味しますか? 一部ですか?

4

3 に答える 3

3

これは、NullPointerExceptions をスローする代わりに null を返す safeNavigation オペレーターです。

Groovy で使用可能な演算子を確認する

http://docs.groovy-lang.org/latest/html/documentation/index.html#_safe_navigation_operator

于 2013-01-22T13:51:03.117 に答える
0

groovy.org から

安全なナビゲーション演算子 (?.) 安全なナビゲーション演算子は、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
于 2013-01-22T13:51:03.967 に答える
0

ここでの説明は?オペレーター:

http://groovy.codehaus.org/Operators#Operators-SafeNavigationOperator

あなたの場合は?演算子は、null オブジェクトでのメソッド呼び出し「equals」を保護します。たとえば、パラメーター リストにクエリ パラメーターが見つかりません。

于 2013-01-22T13:51:35.553 に答える