我希望在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方法的大括号内有大量代码
我可以简单地使用美元符号来执行此操作,以便呼叫仍然有效吗?
答案 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] ] )