传递给 'buildscript' 的 gradle DSL 闭包中的 'apply from' 部分是什么样的代码元素?

What kind of code element is the 'apply from' part in the gradle DSL closure passed to 'buildscript'?

我想弄清楚 apply from 是哪种代码元素:

buildscript {
    apply from: rootProject.file("gradle/versions.gradle")
    repositories {
        google()
        ...
    }
    dependencies {
        classpath plugin.android_gradle_plugin
        ...
    }
}

this post我了解到buildscript gradle函数是用闭包调用的,所以我们可以添加省略的括号:

buildscript ({
    apply from: rootProject.file("gradle/versions.gradle")
    repositories ({
        google()
        ...
    })
    dependencies ({
        classpath plugin.android_gradle_plugin
        ...
    })
})

我一开始以为 apply fromlabel 但什么时候才能真正使用这个标签?且不说groovy不提标签可以有空格

然后我认为它可能是一个属性初始化(new Coordinates(latitude: 43.23, longitude: 3.67)),但是apply from在一个闭包中。

最后我读到了“咖喱”,像这样:

def nCopies = { int n, String str -> str*n }    
def twice = nCopies.curry(2)                    
assert twice('bla') == 'blabla'

所以 apply from 部分可以在使用闭包时首先被评估,但即便如此我仍然不知道 apply from 是标签还是某种赋值以及它的目的是什么。

那么,apply from部分是什么代码元素?

TL;DR: 这是一个以地图为参数的函数调用

apply from: rootProject.file("gradle/versions.gradle")

是以下简称:

apply(from: rootProject.file("gradle/versions.gradle"))

("Parens 是可选的,如果明确的话")

是以下简称:

apply([from: rootProject.file("gradle/versions.gradle"]))

(如果传maps,可以省略map字面量周围的[]