1. 程式人生 > >看懂Gradle指令碼(1)- Groovy語言的Map語法糖

看懂Gradle指令碼(1)- Groovy語言的Map語法糖

這一系列文章是寫給剛開始使用Gradle,並且對Groovy語法不是特別瞭解的Java程式設計師看的。

本篇文章的目標是解釋清楚下面這行Gradle指令碼:

apply plugin: 'java'

行尾的分號是可選的

用過JavaScript語言的人對這個語法糖應該比較熟悉,下面是補上分號後的指令碼:

apply plugin: 'java';

字串字面量(Literal)

Java只能用雙引號定義字串字面量,Groovy語法和JavaScript類似,既可以用雙引號,也可以用單引號。區別是,用雙引號定義的字串可以插值,如下所示:
def pi = 3.14
def str = "pi is ${pi}"

Map字面量

Java語言只有基本型別String陣列是有字面量的,如下所示:

boolean b = false;
int i = 100;
double d = 4.14;
String s = "java";
int[] arr = {1, 2, 3};
Groovy語言給Map添加了字面量,如下所示:
def langs = ['C++':'Stroustrup', 'Java':'Gosling', 'Lisp':'McCarthy']

語法像是Java裡的陣列字面量,key和value用冒號分隔,pair之間用逗號分隔。另外,用這種語法創建出來的是java.util.LinkedHashMap

例項。如果key是普通的字串,還可以進一步省略掉引號,如下所示:

def langs = ['C++':'Stroustrup', Java:'Gosling', Lisp:'McCarthy']

方法呼叫的括號可以省略

我最早是在Ruby語言裡見到這種語法糖的,apply實際上是個方法,下面是補上括號後的指令碼:

apply(plugin: 'java');

如果傳入方法的引數是Map,那麼Map字面量可以省略方括號

補上方括號以後,指令碼看起來是這樣:

apply([plugin: 'java']);

結論

apply其實是個方法,接收一個Map型別的引數。

舉一反三

有了上面的分析,看懂下面這段Gradle指令碼應該是小菜一碟了:

testCompile group: 'junit', name: 'junit', version: '4.10'