代码之家  ›  专栏  ›  技术社区  ›  jayatubi

“all”和“each”在等级上有什么区别?

  •  13
  • jayatubi  · 技术社区  · 9 年前

    我正在使用Android Studio和Gradle构建脚本。当我要更改一些设置时,我需要迭代一些字段。但我不太清楚两者之间的区别 all each .

    例如,我搜索了一些代码来更改输出 apk公司 文件名。代码迭代 applicationVariants 通过 全部的 以及 variant.outputs 通过 每个 :

    applicationVariants.all { variant ->
       variant.outputs.each { output ->
          output.outputFile = new File(output.outputFile.parent, "MyApp.apk")
       }
    }
    
    2 回复  |  直到 5 年前
        1
  •  5
  •   Opal    9 年前

    each 是一个普通的groovy构造。它用于迭代给定对象,不修改它(原始对象),并在完成后返回(未更改)对象。参见:

    assert [1, 2, 3] == [1, 2, 3].each { println it }
    

    虽然 all 是渐变本身添加的方法。所以 android 插件添加 this 扩展,具有 getApplicationVariants 方法由于groovy允许省略 get 只是 applicationVariants 可以使用。现在,上述扩展使用 this 类来保存变量的集合- this .在后者中 全部的 方法已定义,据我所见 只是 批量处理。

        2
  •  3
  •   BradG    4 年前

    这个 documentation 对于 DomainObjectCollection.all 表示它“对该集合中的所有对象执行给定的闭包, 以及随后添加到此集合的任何对象。 "