Android 之 Groovy基础学习
在Groovy中,分号不是必须的。
一、字符串
在Groovy中,单引号、双引号都可以定义一个字符串常量,
不同的是单引号标记的是纯粹的字符串常量,而不是对字符串里的表达式做运算,但是双引号可以。如下:
1.
task printStringClass << {
def str1='单引号'
def str2="双引号"
println "单引号定义的字符串类型:"+str1.getClass().name
println "双引号定义的字符串类型:"+str2.getClass().name
}
执行结果如下:
单引号定义的字符串类型:java.lang.String
双引号定义的字符串类型:java.lang.String
task printStringVar << {
def name="张三"
println '单引号的变量计算:${name}'
println "双引号的变量计算:${name}"
}
执行结果如下:
单引号的变量计算:${name}
双引号的变量计算:张三
双引号可以直接进行表达式计算,${name}, ${1+1}等,只有一个变量可以省略花括号,如$name
二、集合(常见的集合有List , Set , Map , Queue)
List
定义:
task printList << {
def numList = [1,2,3,4,5,6];
println numList.getClass().name
}
访问List中的元素
task printList <<{
def numList = [1,2,3,4,5,6];
println numList.getClass().name
println numList[1] //访问第二个元素
println numList[-1] //访问最后一个元素
println numList[-2] //访问倒数第二个元素
println numList[1..3] //访问第二到4个元素
}
迭代操作,访问List中每一个元素,each方法
task printList <<{
def numList = [1,2,3,4,5,6];
println numList.getClass().name
println numList[1] //访问第二个元素
println numList[-1] //访问最后一个元素
println numList[-2] //访问倒数第二个元素
println numList[1..3] //访问第二到4个元素
numList.each{
println it
}
}
it变量就是正在迭代的元素
Map
定义:
task printlnMap <<{
def map1 = ['width':1024, 'height':768]
println map1.getClass().name
}
访问,采用map[key]或者map.key的方式
task printlnMap <<{
def map1 = ['width':1024, 'height':768]
println map1.getClass().name
println map1['width']
println map1.height
}
对于Map的迭代,当然少不了each方法,只不过被迭代的元素是一个Map.Entry的实例
task printlnMap <<{
def map1 = ['width':1024, 'height':768]
println map1.getClass().name
println map1['width']
println map1.height
map1.each{
println "key:${it.key},Values:${it.value}"
}
}
对于集合,Groovy还提供了collect, find, findAll等便捷的方法。
三、方法
1.括号是可以省略的
task invokeMethod <<{
method1(1,2)
method1 1, 2
}
def method1(int a, int b){
println a+b
}
上面两种调用方法是一样的,但第二种更简洁,Gradle中采用第2种。
2.return是可以不写的
在Groovy中,我们定义有返回值的方法时,return语句不是必须的。当没有return的时候,Groovy会把方法执行过程中的最后一句代码作为其返回值。
task printMethodReturn << {
def add1=method2 1,2
def add2=method2 5,3
println "add1:${add1}, add2:${add2}"
}
def method2(int a, int b){
if(a>b){
a
}else{
b
}
}
执行后输出
add1:2,add2:5
3.代码块是可以作为参数传递的
//呆板的写法其实是这样
numList.each({println it})
//格式化一下
numList.each({
println it
})
//Groovy规定,如果方法的最后一个参数是闭包,可以放到方法外面
numList.each(){
println it
}
//然后方法可以省略
numList.each{
println it
}
四、JavaBean
五、闭包
参考书籍
Android Gradle 权威指南 飞雪无情@编著
版权声明:本文为weixin_44715384原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。