Groovy方法作为变量

Groovy方法作为变量,groovy,Groovy,我有以下Groovy脚本: def Deploy() { if (App == "TEST"){ def book = load "book.groovy" book.buildList.each { a lot of actions } else { book.each { the same a lot of actions } } 因此,区别仅在于执行方法(属性):book.buildL

我有以下Groovy脚本:

def Deploy() {
  if (App == "TEST"){
      def book = load "book.groovy"
      book.buildList.each {
          a lot of actions
      }
  else {
     book.each {
          the same a lot of actions
     }
}
因此,区别仅在于执行方法(属性):book.buildList.each或book.each。如何避免重复这些操作并保持代码更干净。可能有一种方法可以将
book.buildList.each
book.each
放入变量中? 文件Book.groovy包含很少的映射:

buildList = [
  'key1':'value1',
  'key2':'value2',
  'key3':'value3',
]   
anotherList = [
  'key11':'value11',
  'key22':'value22',
  'key33':'value33',
] 
return this
但是如果
应用程序没有“测试”
我有
地图:

[
  'key1':'value1',
  'key2':'value2',
  'key3':'value3',
]

如果两个
调用都执行完全相同的操作,则可以将传递给
每个
方法的闭包体提取到一个变量,并在两个调用之间共享。考虑下面的(简化的)例子:

def闭包={k,v->
println“k=$k,v=$v”
}
定义a=[
“键1”:“值1”,
“键2”:“值2”,
“键3”:“值3”,
]
def b=[
“键11”:“值11”,
“键22”:“值22”,
“key33”:“value33”,
]
println“在映射a上调用公共闭包:”
a、 每次关闭
println“在映射b上调用公共闭包:”
b、 每次关闭

在这个例子中,我使用了变量的公共闭包,然后我能够在两次迭代中重复使用它。另外,请记住,在您的示例中,您使用的是地图,而不是列表。在map上调用
每个
都是绝对正确的,在这种情况下,您可以使用带有
k
v
参数的闭包来精确映射键和值。

如果两个
每个
调用都执行完全相同的操作,您可以将传递给
每个
方法的闭包体提取到一个变量,并在两个调用之间共享它。考虑下面的(简化的)例子:

def闭包={k,v->
println“k=$k,v=$v”
}
定义a=[
“键1”:“值1”,
“键2”:“值2”,
“键3”:“值3”,
]
def b=[
“键11”:“值11”,
“键22”:“值22”,
“key33”:“value33”,
]
println“在映射a上调用公共闭包:”
a、 每次关闭
println“在映射b上调用公共闭包:”
b、 每次关闭
在这个例子中,我使用了变量的公共闭包,然后我能够在两次迭代中重复使用它。另外,请记住,在您的示例中,您使用的是地图,而不是列表。在map上调用
每个
都是绝对正确的,在这种情况下,您可以使用带有
k
v
参数的闭包来精确映射键和值