Groovy中方法返回错误的值类型

时间:2019-09-03 02:01:38

标签: groovy

我正在研究一种常规方法,以查找自定义属性并在找到键后返回值。
问题在于该方法返回的是值的类型而不是值。

    // There is more code before, but its not involved with this issue.

    def UUIDca = 'UUID'
    String customAttributeValue = grabCustomAttribute(UUIDca, event_work)
    appendLogfile("\n\nTest grabCustomAttribute: ${customAttributeValue}\n")  
  }

  // Grab the Custom Message Attribute values by name
  String grabCustomAttribute (String findElement, OprEvent event){

    appendLogfile("""\nIN grabCustomAttribute\nElement to look: ${findElement}\n""")

    def firstItem = true
    if (event.customAttributes?.customAttributes?.size()) {
      event.customAttributes.customAttributes.each { ca ->
        // Define each CMA to catch here

        appendLogfile("""\nElement: ${ca.name} - """)
        appendLogfile("""Valor: ${ca.value}\n""")

        if ("${ca.name}" == findElement) {
          String customValue = ca.value

          appendLogfile("""Custom Attribute Found\n""")
          appendLogfile(customValue)

          return customValue
        }
      }
    }
  }

appendLogfile基本上是对日志文件的打印:)
这是我得到的输出。

  

要看的IN GRUPCustomAttribute元素:UUID

     

元素:UUID-值:c3bb9169-0ca3-4bcf-beb1-f94eda8ebf1a
  找到自定义属性
  c3bb9169-0ca3-4bcf-beb1-f94eda8ebf1a

     

测试grabCustomAttribute:[com.hp.opr.api.ws.model.event.OprCustomAttribute@940e503a]

它返回对象的类型,而不是返回值。没错,但我在寻找价值。
我相信解决方案确实很简单,但是对于Groovy来说,我还是一个新手。

任何帮助将不胜感激。 谢谢。

1 个答案:

答案 0 :(得分:1)

在这种情况下,return语句用于闭包,而不用于方法,因此您的方法实际上返回的是“每个”正在迭代的列表

您可以在此处采用的最简单方法是使用Groovy find方法来查找要搜索的元素。像这样:

String grabCustomAttribute (String findElement, OprEvent event) {
    return event.customAttributes.customAttributes?.find { ca -> ca.name == findElement }.value
}