機械翻訳について

GroovyのNull-Safe比較演算子の理解

Groovyの比較演算子==および!=がNULLを正常に処理するため、等価比較または不等価比較でのNULL値の保護について心配する必要はありません。

さらに、>>=<および<=演算子は、null関連の例外を回避するように設計された「また」ですが、Groovyがこれらの順序依存の比較でnullをどのように処理するかを意識する必要があります。 実際には、null値は自然順序でNULL以外の値よりも小さいため、たとえば次の比較結果を確認します。

NULLがすべてより小さい場合の例

左側の式

演算子

右側式

比較結果

'a'

>

null

true

'a'

<

null

false

100

>

null

true

100

<

null

false

-100

>

null

true

-100

<

null

false

now()

>

null

true

now()

<

null

false

now() - 7

>

null

true

now() - 7

<

null

false

異なるセマンティクスを持つNULL値フィールドを比較で処理する場合 - たとえば、NULLのMaximumOverdraftAmountフィールドを、スプレッドシート・ユーザーの期待どおりにゼロ(0)であるかのように処理 - 次に、次の例に示すように、比較ロジックの一部としてnvl()関数を使用します:

// Change default comparison semantics for the MaximumOverdraftAmount custom field in
// case its value is null by using nvl() to treat null like zero (0)
if (nvl(MaximumOverdraftAmount,0) < -2000) {
  // do something for suspiciously large overdraft amount
} 

前述の表に示すように、比較にnvl()関数がない場合、nullMaximumOverdraftAmount値は常に-2000より小さくなります - デフォルトでは、nullはすべてのものより小さいためです。