1、groovy学习 -- 基础语法

  1. groovy学习 – 基础语法
  2. gradle – Project
  3. gradle – Task
  4. gradle生命周期
  5. Android中的gradle
  6. Android自定义插件

groovy语言是Gradle构建的基础,所以在讲解Gradle之前我们有必要先学习一下groovy的一些基础知识。

groovy也是一种jvm的动态语言,在编译后也跟java一样会生成字节码文件,那么你要是有java的基础,学习groovy也就不难了。

一、基础知识

1、表达式

在变量使用之前,需要对变量先进行定义,在groovy中有两种定义方式,也就是说在定义的时候既可以明确变量的类型,也可以通过 def 关键字定义不明确类型的变量。

int count = 1 // 注意分号可以不加

def count = 1 // count会根据所赋的值的类型推断出自己当前的类型

count = "groovy"

2、字符串定义

字符串的定义主要有三种方式
第一种方式(单引号 ‘’ )

 // 单引号的定义是最简单的,相当于 java 中的 String,
 // 在编译后单引号所定义的变量对应的也是 java.lang.String 对象
 def name = 'name'

第二种方式 (三引号 ‘“ ”’ )

// 三引号的定义的字符串与单引号定义的唯一的不同之处就是能够换行,其他与单引号定义没有任何区别 ,
// 在编译后三引号所定义的变量对应的也是 java.lang.String 对象
def name = ‘“第一行
第二行
第三行”’

第三种方式 (双引号 “ ” )

// 双引号中间是可以加变量的,
// 当字符中没有变量时他跟单引号定义的字符串没有任何差别,此时的字符串对应的是 java.lang.String 对象,
// 当字符串中间有 ${变量} 的引用的时候,可以用变量的值来替换,此时该字符串对应的对象是 org.codehaus.groovy.runtime.GStringImpl 对象
def name = "android"

def sayHell = "say hello" // 输出 say hello 对应 java.lang.String 对象

def sayHelloAndroid = “ say hello ${name}// 输出 say hello android 对应GStringImpl 对象


二、列表

1、列表的定义

groovy中的列表其实就是 java 中的 ArrayList 。

def name = [  "one" , "two" , "three" ]

由于 groovy 中定义列表和在 java 中定义数组是一样的,那么我们要像在groovy 定义数组怎么办呢?很简单利用 as 关键字

def name = [  "one" , "two" , "three" ] as String[]

或者

int age = [ 1 , 2 , 3 , 4 , 5 ]

2、列表元素的访问

name[0] //第0个元素 one 
name[-1] // 倒数第一个元素 three

name[0..1] // 返回列表 ["one","two"]
name[0..<1] // 返回列表 ["one"]

“[]” 操作符就是 List 类中定义的 getAt() 。其他方面跟操作 ArrayList 一样,在这里不做过多介绍。

三、映射

groovy中的映射其实就是 java 中的 LinkedHashMap 。

1、映射的定义

def person = [ 'one' : 1 ,
				'two' : 2 ,
				'three' : 3]

2、映射元素的访问

person['one'] // 输出 1
person.two // 输出 2

3、新增元素

在 java 中可以通过 put() 方法添加,但在 groovy 除了用 put() 添加还有更简单的方法。

person.four = 4 

这种方式是在Map中寻找 key 为 four 的元素,如果找到了 就替换这个 key 的 value 值,若没找到就在该 Map 中进行添加。

四、闭包

Groovy闭包是一种可执行代码块的方法,闭包也是对象,也可以传递参数。由于闭包是代码块,因此也可以在需要时执行。

1、闭包及其调用

def clos = { println 'Hello Groovy!' }

clos.call() // 输出 Hello Groovy

在这里,闭包不带参数,并且使用标识符 clos 引用这个闭包。

2、参数化闭包

def clos = { param -> println "Hello ${param} " }

clos.call('Groovy') // 输出 Hello Groovy

clos('Groovy again') // 输出 Hello Groovy again   调用时可以省略 call


def clos1 = { println "Hello ${it} "} // 闭包定义只接收一个参数的时,可以省略参数的声明,并在调用的时候用 it 代替。

闭包也可以作为方法的参数进行传递

def clos = { param -> println "Hello ${param} " }

def demo (clo) {
	clo.call ("Groovy")
}

// 调用
demo(clos) // 输出 Hello Groovy

// 当函数调用最后一个参数是闭包的时候,可以将闭包从实参列表中剔除,并放到其后的括号中去
demo() clos // 等效于 demo(clos) 的调用
demo clos // 等效于 demo(clos) 的调用,切记 demo 与 clos 中间有空格

3、闭包、集合和字符串

// 字符串操作
‘Ken’.each { print it } // 输出 Ken

// 列表操作
[1,2,3,4].each { print it } // 输出 1234

// map 操作
['Ken' : 21,'John' : 22,'Sally' : 23].each { print it } // 输出 Ken = 21 John = 22 Sally = 23

['Ken' : 21,'John' : 22,'Sally' : 23].each { print "${it.key} to ${it.value}" } // 输出 Ken to 21 John to 22 Sally to 23


  1. groovy学习 – 基础语法
  2. gradle – Project
  3. gradle – Task
  4. gradle生命周期
  5. Android中的gradle
  6. Android自定义插件
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值