使用if语句修改groovy方法调用

时间:2013-06-11 20:43:30

标签: if-statement groovy

我希望在if !row[connected].equals("")

中进行方法调用

然后

Event(id: "event_${row[eventid]}", externalId: "event_${row[eventid]}", connected: row[connected]){   

但是if row[connected].equals("")

然后

Event(id: "event_${row[eventid]}", externalId: "event_${row[eventid]}"){   

我不想在if else语句中复制代码两次,因为在Event方法的大括号内有大量代码

我可以简单地使用美元符号来执行此操作,以便呼叫仍然有效吗?

2 个答案:

答案 0 :(得分:2)

Groovy中带有命名参数的方法调用只是将Map传递给方法,所以你可以说

def eventParams = [
  id: "event_${row[eventid]}", externalId: "event_${row[eventid]}"
]
if(row[connected]) { // empty string is Groovy-false, non-empty is true
  eventParams.connected = row[connected]
}

Event(eventParams)

答案 1 :(得分:1)

或者是一个厚脸皮的单行:

Event( [ id        : "event_${row[eventid]}", 
         externalId: "event_${row[eventid]}" ] << 
           row[connected] == '' ? [:] : [ connected: row[connected] ] )