传递给 '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 from
是 label 但什么时候才能真正使用这个标签?且不说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字面量周围的[]
)
我想弄清楚 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 from
是 label 但什么时候才能真正使用这个标签?且不说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字面量周围的[]
)