2010-11-29 1 views
3
私はいくつかのgroovyコードでこれを見ました:

何ですか?グルーヴィー変数について?

trip.id?.encodeAsHTML() 

"id?"を使用するかどうかの違いは何ですか?

+0

他の回答に加えて、私は 'Elvis'演算子と組み合わせると、この構文が非常に強力であることを指摘したいと思います:(Mattの返信でGroovy Operatorsのリンクを調べてください)。 –

+0

x = 0のような "Elvis + Assign演算子"がない、xがnullならxにyを代入することが悪いです – fabien7474

+1

@fabienそれを行うか、yなら 'x'に' y'を代入します。 「ヌル」ではありませんでしたか? –

答えて

6

オブジェクトがnullかどうかをチェックします。 これを使用すると、nullpointer例外を防ぐことができます。

あなたがそれを使用する場合は、オブジェクト全体(例えばのためにそれを使用する必要があります。trip.id?.otherstuff?.morestuff?.encodeAsHTMLに()

1

これは、Groovyのヌル・安全な作業だそれがnullを行います。オブジェクトを逆参照する前に確認してください。Groovyの演算子here。それは、「ヌル・安全な間接参照演算子」と呼ばれています

4

の詳細を参照してください。違いはtrip.idがnullの場合、代わりにNullPointerExceptionを投げるの、それが結果としてnullを返すということです