2016-09-11 13 views
0

三項演算子を使用して大量のIF/ELSE文をコードから削除しようとしています。Groovy三項演算子がnullを出力する

//Checks to see if person exists  //if not then add  //else print 

println doesPersonExist(personName) ? addPerson(personName) : 'No such person' 

addPerson(personName)メソッドを実行すると、printlnによってNULLが出力されるという問題があります。とにかくコンソールへのprintngからのNULLはありますか?私はprintlnを削除することができると理解していますが、 'No such person'は印刷されません。

UPDATE:私は最終的に必要に応じて、この作業を取得するために管理 - 私は単にものprintlnと「いいえ、そのような人」を取り出して、これでそれらを置き換え:単にprintlnの声明と呼ばれる方法が存在する

doesCarrierExist(carrierName) ? exists() : addCarrier(carrierName) 

ベースクラス内で私はこれが将来同様の問題を抱える人に役立つことを願っています。

+0

「ヌル」の印刷を避ける正しい方法は、 'println'の呼び出しを避けることです。つまり、コードを 'if'ステートメントを使って変更する必要があります。それらには何も問題はありません。 – yole

+0

'doesPersonExist(personName)のようなものをお探しですか? addPerson(personName):println( 'そのような人') '? –

答えて

0

コードでは、2つの異なるアクションを組み合わせています。

  1. 印刷方法。
  2. addPerson(personName)。 それを画面に印刷したいとします。

最善の方法は、2つの別々のハンドル(追加および印刷用)ごとに1つ扱うことです。あなたは、Java言語を使用している場合は「DEF」を置き換えます。

def textResult = doesPersonExist(personName) ? addPerson(personName) : "" 
println(textResult) 

注:

addPerson(PERSONNAME)は次のGroovyコードセクションを使用して、コンソールに結果を印刷することができます文字列の結果を返す場合

'String'を使用します。