作为变量的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.buildList.each或book.each。如何避免重复这些大量的操作,保持代码的干净。可能有一种方法可以把 book.buildList.eachbook.each 文件Book.groovy中包含的地图很少。

buildList = [
  'key1':'value1',
  'key2':'value2',
  'key3':'value3',
]   
anotherList = [
  'key11':'value11',
  'key22':'value22',
  'key33':'value33',
] 
return this

但如果 App not "TEST" 我有 book 地图。

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

解决方案:

如果两个 each 调用做的是完全相同的事情,你可以提取你传递给 each 方法到一个变量,并在两次调用之间共享它。考虑以下(简化)的例子。

def closure = { k, v ->
    println "k = $k, v = $v"
}

def a = [
        'key1': 'value1',
        'key2': 'value2',
        'key3': 'value3',
]

def b = [
        'key11': 'value11',
        'key22': 'value22',
        'key33': 'value33',
]

println "Calling common closure on the map a:"
a.each closure

println "Calling common closure on the map b:"
b.each closure

在这个例子中,我对变量进行了共同的闭包,然后我就可以在两次迭代中重复使用它。另外,请记住,在你的例子中,你使用的是map,而不是list。调用 each 上的闭合是绝对正确的,在这种情况下,你可以使用一个带有 kv 准确映射键和值的参数。

给TA打赏
共{{data.count}}人
人已打赏
未分类

在Django RestFramework中,Router没有显示正确的URL?

2022-9-9 1:39:20

未分类

我想在使用React js上传文件后,显示一个成功的警告贴。

2022-9-9 1:39:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索