Gradle配置及语法笔记,进行中~~~

Gradle

一款最新的、功能强大的构建工具

Groovy概述(DSL编程语言的一种)

  • 基于JVM的敏捷开发语言
  • 结合了Python、Ruby和Smalltalk的许多强大的特性
  • groovy可以与Java完美结合,可以使用java所有的库
  • 语法上支持动态类型,闭包等新一代语言特性
  • 无缝集成所有已经存在的Java类库
  • 支持面向对象和面向过程(写脚本用)
groovy优势:

一种更加敏捷的编程语言
入门简单,功能非常的强大
亦可以作为编程语言和脚本语言
熟练掌握Java的同学更适合学习

groovy基础语法:

groovy变量:
  • 支持强类型语言和弱类型语言:
    可以像Java那样声明一个变量的时候就定义其类型
int x = 10;

也可以定义其为弱类型变量(变量只在一个包内作用推荐使用,跨模板时不推荐)

def x = 10;
def x = 'nice';

上述代码先将10赋值给x,此时编译器自动将x解析为Integer类型,而后又赋值一个String变量给x(在Java中是会报错的),编译器就将其有设置为String类型

groovy字符串:

可以直接使用单引号定义一个String类型变量

def name = 'a single string'  //可以不加分号

可以在输入语句中定义一个变量 ${}

def sum = "sum = 2${ + 3}"   //输出: sum = 5 (只能双引号可以字符扩展)

使用双引号定义的${}是GString类型,和String类型可以相互赋值转换
使用减法直接删除减数在被减数中的值

def x = "hello nice"
def y = "nice"
println x - y  //输出hello
闭包

闭包的概念也许我们稍微陌生一点,但是实际上,我们可以简单把它当做一个匿名类,只是编译器提供了更加简单的语法来实现它的功能。
闭包(Closure)是groovy中一个很重要的概念,而且在gradle中广泛使用。简而言之,闭包就是一个可执行的代码块,类似于C语言中的函数指针。在很多动态类型语言中都有广泛的使用,java8 中也有类似的概念:lambda expression,但是groovy中的闭包和java8中的lambda表达式相比又有很多的不同之处。

我们可以把闭包当做一个匿名内部类,只是编译器提供了更加简单的语法来实现它的功能。在Groovy中闭包也是对象,可以像方法一样传递参数,并且可以在需要的地方执行。
闭包有三个很重要的属性分别是:this,owner,delegate,分别代表以下概念:

  • this: 对应于定义闭包时包含他的class,可以通过getThisObject或者直接this获取
  • owner: 对应于定义闭包时包含他的对象,可以通过getOwner或者直接owner获取
  • delegate: 闭包对象可以指定一个第三方对象作为其代理,用于函数调用或者属性的指定,可以通过getDelgate或者delegate属性获取
列表(List)
def list = [1,2,3,4,5]  //定义的是一个长度为5的ArrayList
int[] array = [1,2,3,4,5] //定义的是一个长度为5的数组
int result = list.find {return it % 2 == 0}  //查找第一个符合闭包条件的值
def result = list.findAll {return it % 2 == 0} //查找所有符合闭包条件的值
映射(Map)
def colors = [ red: 'ff0000',
               green: '00ff00',
               blue: '0000ff']
colors.red //索引方法,获取key为red的value
colors.yellow = 'ffff00' //添加元素,添加key为yellow和value为ffff00的元素
colors.complex = [a:1, b:2] //添加元素,添加key为complex和value为[a: 1.,b: 2]的map对象
=======================================================================
def students = [
	1: [number: '0001', name: 'Bob', score: 55, sex: 'male'],
	2: [number: '0002', name: 'Johnny', score: 62, sex: 'female'],
	3: [number: '0003', name: 'Claire', score: 73, sex: 'female'],
	4: [number: '0004', name: 'Amy', score: 66, sex: 'male'],
]
//遍历
students.each { def student -> println "the kry is ${student.key}," 
+ "the value is ${student.value}"  //获取了students里所有的key和value

面向对象

注意:
1.groovy中类和方法默认都是public
2.写脚本可在IDEA中创建一个groovy script类
3.接口中不可以写非public类型的方法

元编程

在Java中查找一个类,找不到就会报错,groovy的元编程中,找不到一个类也会继续运行下去(粗略解释)

groovy中对Json的操作

实体类转化为Json对象:

def list = [new Person(name: 'John', age: 25),
			new Person(name: 'Major', age: 26)]
JsonOutput.toJson(list)  // 转化为Json对象

Json对象转化为实体类:

def jsonSlpuer = new JsonSlurper()
jsonSlpuer.parse()  //创建 一个JsonSluper对象,用其中的parse()方法即可
groovy对xml文件的处理
final String xml = "..."
//开始解析此xml数据
def xmlSluper = new XmlSlurper()
def response = xmlSluper.parseText(xml)
groovy对普通文件的处理

所有Java对文件的处理类,groovy都可以使用
而groovy还有其特有的处理方法

def file = new File('文件所在路径')
file.eachLine { line ->  //groovy中的eachLine方法,作用是读取该文件中的每一行
	println line         //输出每一行
} 
=========================================================================
def text = file.getText()  //获取文件更简单的方法
println text 
=========================================================================
def reader = file.withReader { reader -> 
	char[] buffer = new char[100]		//获取前100个字符
	reader.read(buffer)
	return buffer
}
gradle是什么, 能做什么
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值