2016-09-11 5 views
0

Я пытаюсь устранить большое количество инструкций IF/ELSE из моего кода с использованием тернарного оператора.Groovy trernary operator prints null

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

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

Проблема заключается в том, что если метод addPerson (PERSONNAME) выполняется, то значение NULL печатается из-за Println. Есть ли что-нибудь из NULL из printng на консоль? Я понимаю, что могу удалить println, но потом «Нет такого человека» не будет печатать.

UPDATE: Я, наконец, удалось получить эту работу по мере необходимости - я просто удалил Println, а также «Нет такого человека» и заменить их следующим образом:

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

Если существует способ просто называется Println заявление в базовом классе. Я надеюсь, что это поможет любому, у кого есть аналогичная проблема в будущем.

+0

Правильный способ избежать печати «null» заключается в том, чтобы избежать вызова 'println'. Другими словами, вы должны изменить свой код на использование операторов 'if'. В них нет ничего плохого. – yole

+0

Вы ищете что-то вроде 'doesPersonExist (personName)? addPerson (personName): println («Нет такого человека») '? –

ответ

0

В вашем коде вы смешиваете 2 разных действия.

  1. The print способ.
  2. AddPerson (personName). И вы хотите напечатать это на экране.

Наилучший способ обработки его как двух отдельных ручек по одному для каждого действия (для добавления и для печати).

Если addPerson (PERSONNAME) возвращает результат типа String можно печатать на консоль результат, используя следующий Groovy раздел кода:

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

Примечание: Если вы используете Java язык заменяющего «Защиту» с 'String'.

Смежные вопросы