条件式の使用
条件ロジックを実行する必要がある場合は、使い慣れたif/else構成を使用します。
たとえば、前の項のテキスト・フラグメントの例で、現在のオブジェクトのContactTwitterName
がnull
を返す場合、Twitter名に関連する静的テキストは含めません。 次のように、if
/else
を使用して、この条件付きテキストを含めることができます:
def textFragment = 'We will try to call you at ' + ContactPhoneNumber
if (ContactTwitterName != null) {
textFragment += ', or send you a tweet at '+ContactTwitterName
}
else {
textFragment += '. Give us your twitter name to get a tweet'
}
textFragment += '.'
従来のif
/else
ブロックは読みやすくなる場合がありますが、それ以外の場合は非常に冗長です。 値がEmailAddress
フィールドの末尾が.gov
サフィクスであるかどうかに依存するemailToUse
変数を定義する例を考えてみます。 プライマリ電子メールが.gov
で終わる場合は、かわりにAlternateEmailAddress
を使用します。 従来のif
/else
ブロックを使用すると、スクリプトは次のようになります:
// Define emailToUse variable whose value is conditionally
// assigned. If the primary email address contains a '.gov'
// domain, then use the alternate email, otherwise use the
// primary email.
def emailToUse
if (endsWith(EmailAddress,'.gov') {
emailToUse = AlternateEmailAddress
}
else {
emailToUse = EmailAddress
}
Groovyの便利なインラインif
/ then
/ else
演算子を使用すると、同じコードを非常に少ない行に書き込むことができます:
def emailToUse = endsWith(EmailAddress,'.gov') ? AlternateEmailAddress : EmailAddress
インラインのif
/ then
/ else
演算子には、次の一般的な構文があります:
BooleanExpression
?
If_True_Use_This_Expression
:
If_False_Use_This_Expression
空白を使用してコードをより読みやすくするために書式設定できるため、次のようなインライン条件式をラップすることを検討してください:
def emailToUse = endsWith(EmailAddress,'.gov')
? AlternateEmailAddress
: EmailAddress