HelloGroovy
Groovy入門級(jí)案例及簡(jiǎn)單說(shuō)明
- author: 老機(jī)長(zhǎng)
- quality pighead
- time: 2017/04/27
- update: 2017/05/09
- version: 1.4.0
什么是Groovy
- Groovy是Java平臺(tái)上設(shè)計(jì)的面向?qū)ο缶幊陶Z(yǔ)言
- Groovy的語(yǔ)法與Java非常相似,以至于多數(shù)的Java代碼也是正確的Groovy代碼
- Groovy代碼動(dòng)態(tài)地被編譯器轉(zhuǎn)換成Java字節(jié)碼。由于其運(yùn)行在JVM上的特性,Groovy可以使用其他Java語(yǔ)言編寫的庫(kù)
- Groovy擁有類似Python、Ruby和Smalltalk中的一些特性,可以作為Java平臺(tái)的腳本語(yǔ)言使用
為什么要用Groovy ? 腳本語(yǔ)言有哪些 ? 而不用Python Ruby 等腳本語(yǔ)言呢 ?
答案在于 Gradle 的運(yùn)行環(huán)境. 雖然 Gradle 以一個(gè)通用構(gòu)建工具為核心, 但是它的重點(diǎn)是Java項(xiàng)目. 在這樣的項(xiàng)目中, 顯然團(tuán)隊(duì)每個(gè)成員都對(duì) Java 非常熟悉. 我們認(rèn)為構(gòu)建應(yīng)盡可能對(duì)所有團(tuán)隊(duì)成員都是透明的, 所以選擇了 Groovy.
你可能會(huì)說(shuō),為什么不直接使用 Java 作為構(gòu)建腳本的語(yǔ)言. 我們認(rèn)為這是一個(gè)很有用的問(wèn)題. 對(duì)于你的團(tuán)隊(duì), 它要有最高的透明度和最低的學(xué)習(xí)曲線, 也就是說(shuō)容易掌握. 但由于 Java 的限制, 這樣的構(gòu)建語(yǔ)言不會(huì)那么完美和強(qiáng)大. 而像 Python,Groovy 或 Ruby 語(yǔ)言用來(lái)作為構(gòu)建語(yǔ)言會(huì)更好. 我們選擇了 Groovy 是因?yàn)樗o Java 開(kāi)發(fā)人員提供了迄今為止最大的透明度. 其基本的符號(hào)和類型與 Java 是一樣的,其封裝結(jié)構(gòu)和許多其他的地方也是如此. Groovy 在這基礎(chǔ)上提供了更多的功能, 而且與 java 有共同的基礎(chǔ).
安裝Groovy
Mac/Linux方式
1.Homebrew 安裝方式
brew install groovy
2.MacPorts 安裝方式
sudo port install groovy
Windows方式
官方下載地址:Groovy 下載地址,點(diǎn)擊下載解壓至磁盤即可
note:預(yù)先配置環(huán)境變量
創(chuàng)建Groovy工程
1.執(zhí)行命令
gradle init --type java-library
2.在build.gradle文件中,添加 Groovy 插件
apply plugin: 'groovy'
3.在dependencies task內(nèi)部添加依賴配置,如下
compile 'org.codehaus.groovy:groovy-all:xxx'
Groovy相關(guān)語(yǔ)法
默認(rèn)導(dǎo)入包集合:
- java相關(guān)包:
- java.lang
- java.util
- java.io
- java.net
- java.math.BigDecimal
- java.math.BigInteger 等
- groovy相關(guān)包:
- groovy.lang
- groovy.util 等
Java的JDK VS Groovy的GDK
-
普通標(biāo)識(shí)符
語(yǔ)法與C語(yǔ)言類似,只能以字母、美元符號(hào)$、下劃線開(kāi)頭等;不能以數(shù)字開(kāi)頭- def name
- def $name
- def _name
-
GString
- Java 單引號(hào)定義char類型變量,雙引號(hào)定義字符串
- GString 支持單引號(hào)定義字符串,不支持占位符操作;
- GString 支持雙引號(hào)支持占位符,$A.B屬性調(diào)用 ,${A+B}替代字符串或者表達(dá)式使用;
- GString 支持三重單引號(hào)可定義多行文字</li>
-
字符串
- 單引號(hào)字符串
- 雙引號(hào)字符串
- 三重單引號(hào)字符串
- 有沒(méi)有三重雙引號(hào)字符串呢 ?
-
引用標(biāo)識(shí)符
- map
- list
參考 :BaseLearning.groovy
- Process 操作
參考 StringLearning.groovy.runCMD()
- 安全操作符,三目運(yùn)算符(雙目運(yùn)算符)
- person ?. name
- preson ?: "defaultName"
參考 StringLearning.groovy.checkNullString()
- 多賦值()
參考 StringLearning.groovy.multiValue()
- 靈活初始化
參考 ClassLearning.groovy
布爾型求值
list 及 map集合
參考 ListLearning.groovy
參考 MapLearning.groovy
參考 EachLearning.groovy
- Groovy快捷Api初探
參考 EachLearning.groovy
- 閉包
是groovy.lang.Closure 的實(shí)例,像一段代碼塊或者方法指針
如何定義一個(gè)閉包:
{ [closureParameters -> ] statements }
//[closureparameters -> ]是可選的逗號(hào)分隔的參數(shù)列表,參數(shù)類似于方法的參數(shù)列表,這些參數(shù)可以是類型化或非類型化的。
Example:
{i++}
{-> println it}
{a -> a++}
{String str,int i -> println str + i}
閉包的調(diào)用:
closure(params)
closure.call(params)
參考 :ClosureLearning.groovy
- File文件操作
參考 FileLearning.groovy
- Json
參考 JsonLearning.groovy
- XML
參考 XmlLearning.groovy