【问题标题】:Groovy ternary operator prints nullGroovy 三元运算符打印 null
【发布时间】:2017-01-18 23:34:19
【问题描述】:

我正在尝试使用三元运算符从我的代码中消除大量的 IF/ELSE 语句。

 //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 但不会打印“没有这样的人”。

更新:我终于设法按要求完成了这项工作 - 我只是删除了 println 和“没有这样的人”并用这个替换它们:

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

exists 方法在基类中简单地称为 println 语句。我希望这对以后遇到类似问题的人有所帮助。

【问题讨论】:

  • 避免打印null的正确方法是避免调用println。换句话说,您应该将代码改回使用if 语句。他们没有任何问题。
  • 你在寻找类似doesPersonExist(personName) ? addPerson(personName) :println( 'No such person')`的东西吗?

标签: java groovy null ternary-operator


【解决方案1】:

在您的代码中,您混合了 2 个不同的操作。

  1. 打印方法。
  2. addPerson(personName)。 您希望将其打印到屏幕上。

最好的方法是将其作为 2 个单独的句柄处理,每个句柄一个用于每个操作(用于添加和打印)。

如果 addPerson(personName) 返回 String 结果,您可以使用以下 Groovy 代码部分将结果打印到控制台:

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

注意:如果您使用 Java 语言,请将 'def' 替换为 'String'。

【讨论】:

    猜你喜欢
    • 2014-07-28
    • 2021-06-01
    • 2020-12-26
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多