Gradle自动化构建(一) Groovy

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huanghuangjin/article/details/82256950
官网 http://groovy-lang.org/

DSL : domain specific language (领域特定语言)    Groovy 是DSL的一个分支,其他如 uml sml xml html
    特点:解决某一特定领域的问题,编译语言非涉及的领域,结合编译语言,完善工程的开发

Groovy : 
    是一种基于JVM的敏捷开发语言,groovy即可以编译成class文件给jvm执行,也可以像脚本语言一样解释编写的脚本
    groovy完美结合了java,可以使用java所有的库。是java的一种扩展

    语法上支持动态类型,闭包等新一代语言特性
    即支持面向对象也支持面向过程编程

环境搭建:  官网下载 GroovySDK ,所有操作系统都是用的同一个SDK
    然后将 .\groovy-2.5.2\bin 配置到环境变量即可    使用 groovy -v 或 -version 查看版本信息与对应的jdk与操作系统,(不能使用32位的jdk)

    E:\gradle\groovy-2.5.2\bin\groovy 与 groovyc 命令对应 java 与 javac 命令
    E:\gradle\groovy-2.5.2\bin\groovysh  解释groovy脚本的命令

变量类型

// groovy 语法
int x = 10 // 强类型定义 变量
println x.class // class java.lang.Integer     groovy中没有基础数据类型,只有对象类型

// 弱类型 def 定义变量
def a = 11
println a.class // class java.lang.Integer
a = "abcd" // def 变量可以用另一种数据类型再次赋值。。   def 类似于 Object 数据类型,java中用object对象这样赋值也不会报错。。。
println a.class // class java.lang.String
def b = 3.14
println b.class // class java.math.BigDecimal
def c = 'str'
println c.class // class java.lang.String

字符串

def a = 'h\'\"j' // groovy中可以使用 '' 也可以使用 "" 包裹字符串。 特殊字符也是用 \ 转义
println a.class

def b = '''\
a b
c
''' // 三引号中编写的字符串是什么样子,输出的就是什么样子,单引号不行,同理, ''' 与 """ 作用一样
/* // 输出,开始的 '''\ 中的 \ 表示下一行与这行是一行, \ 之后不能有空格。 c 之后有一个回车,所以打印的时候也会打印一个空行
a b
c

*/
println  b // b.class也是class java.lang.String

def c = "android" // "" 与 '' 的区别是,"" 中的字符串可以改动,而 '' 中的字符串不可以改动
println c.class // class java.lang.String
def d = "hello ${c}" // $c 表示取变量值, 而 ${} 则表示 {} 中不仅可以是变量,还可以是任意表达式
println d // hello android
println d.class // class org.codehaus.groovy.runtime.GStringImpl
def e = "2 + 3 = ${2+3}"
println e // 2 + 3 = 5

def f = echo(e)
println f // 2 + 3 = 5   ,org.codehaus.groovy.runtime.GStringImpl 与 java.lang.String 是可以相互转换的
String echo(String msg) {
    return msg
}

// ----------------- 字符串的拓展方法 ----------------- 来自 java.lang.String 、 DefaultGroovyMethods 与 StringGroovyMethods
// 普通类型的参数
def g = "groovy"
println g.center(9, "a") // agroovyaa , center 表示填充字符串,以g为中心,第二个参数不传表示以空格填充
println g.padLeft(9, 'a') // aaagroovy , 在字符串左边填充, padRight 函数,右边填充
println g.leftShift('a') // groovya , 填充字符串

def h = 'Hello'
println g > h // true , 操作符比较字符串的unicode码,等同String函数 g.compareTo(h) // h 与 g 的unicode码比较
println h[0] // H , []操作符,等同于 h.getAt(0)
println h[0..1] // He , 0..1 表示下标范围
def i = 'someHello@Hello'
println i - h // some@Hello , 等同于 i.minus(h) ,在i中减去包含的h字符串,只减一次
println i.reverse() // olleH@olleHemos , 倒转字符串
println i.capitalize() // SomeHello , 首字母大写
def j = '10'
println j.isNumber() // true
println j.toInteger() // 10

// 闭包类型的参数

猜你喜欢

转载自blog.csdn.net/huanghuangjin/article/details/82256950