0

ここでまた。同じ結果になる2つの単純なことで混乱しています。私はGrailsを学んでおり、この状況を乗り越えました。

${ClassName.name}両方の${ClassName?.name}結果は同じです。「?」の使用の違いは何ですか? この場合?

クエスチョンマークの使い方の違いを教えてください。

4

1 に答える 1

1

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

安全なナビゲーション演算子 (?.) 安全なナビゲーション演算子は、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-08-14T05:18:33.347 に答える