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

If statement 使用if语句修改groovy方法调用,if-statement,groovy,If Statement,Groovy,我想要一个方法调用,其中if!行[已连接]。等于(“”) 然后 Event(id: "event_${row[eventid]}", externalId: "event_${row[eventid]}", connected: row[connected]){ 但是如果行[connected]。等于(“” 然后 我不想在if-else语句中复制两次代码,因为事件方法的大括号中有大量代码 例如,我可以简单地使用美元符号来实现这一点,以便调用仍然有效吗?在Groovy中使用命名参数的方法调

我想要一个方法调用,其中
if!行[已连接]。等于(“”)

然后

Event(id: "event_${row[eventid]}", externalId: "event_${row[eventid]}", connected: row[connected]){   
但是
如果行[connected]。等于(“”

然后

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


例如,我可以简单地使用美元符号来实现这一点,以便调用仍然有效吗?

在Groovy中使用命名参数的方法调用只是将
映射传递给该方法,因此您可以说

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)

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)
或者一句厚颜无耻的话:

Event( [ id        : "event_${row[eventid]}", 
         externalId: "event_${row[eventid]}" ] << 
           row[connected] == '' ? [:] : [ connected: row[connected] ] )
Event([id:[Event.${row[eventid]}),
externalId:“event_${row[eventid]}”]或厚脸皮的单行线:

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

externalId:“event_${row[eventid]}”]非常酷,虽然不会用于将来理解我的代码的人哈哈,但也不会用于将来理解我的代码的人哈哈