Подтвердить что ты не робот

Смутно с использованием назначения "=" и скобок {}

Я новичок в gradle (и так далее к groovy), и я едва ли очучу какую-то концепцию и не знаю, связано ли это groovy или gradle и какие ключевые слова для google, для получения некоторой помощи.

Я очень часто натыкаюсь на вещи вроде:

android {
    [some configuration]
}

Итак, что такое Android? Класс? Пространство имен? Коллекция свойств?

Но что более запутанно:

Иногда я вижу конфигурации, которые выглядят так:

minSdkVersion 19

Кажется, это задание, но без знака равенства. И иногда есть задания с равными знаками, такими как

source = "folder/file.java"

Так что это очень запутанно. Равный знак против равного знака. Все эти скобки.

Все введенные мной groovy представления не охватывают именно эти темы. Так что это какое-то соглашение gradle или это реальный синтаксис groovy?

4b9b3361

Ответ 1

В Groovy скобки иногда необязательны.

Первый android передает замыкание методу. то есть:

void android( Closure config ) {
    println "In Android : ${config()}"
}

android {
    'tim'
}

prints: In Android : tim это то же самое, что и вызов:

android( {
    'tim'
} )

Если вы положите парсеры назад.

Второй пример с minSdkVersion одинаков, но он передает Integer методу.

void minSdkVersion( Integer version ) {
    println "In MinSdkVersion : $version"
}

minSdkVersion 19
// same as minSdkVersion( 19 )

Итак, чтобы напечатать In MinSdkVersion : 19

В последнем примере устанавливается свойство String (как и следовало ожидать)

Ответ 2

Строго говоря, android - это динамический метод, который принимает замыкание (кодовый блок), которому предоставляется доступ к некоторому внутреннему представлению конфигурации android plugin/task. Таким образом, внутри этого закрытия вы в конечном итоге либо вызываете другие методы, либо присваиваете доступным свойствам. Если знак равенства отсутствует, то это вызов метода, если он тогда является чистым свойством. Вы можете получить эту идею, посмотрев документацию плагина или на объекты, которые ее представляют.

Я думаю, вы можете смело ссылаться на этот блок как на конфигурацию плагинов для Android. Так как это влияет на код.