【Gradle系列】Groovy基础编程知识1

·  阅读 469
【Gradle系列】Groovy基础编程知识1

引言

上一节,我们了解了“变量的定义” 本章我们将学习系列的基础编程知识,如:字符串/数组/集合等

String 3种常用的定义

(1)单引号定义字符串

def name = '单引号定义字符串'
复制代码

这种定义是没有格式的,需要换行等只能通过加号进行拼接

(2)2个单引号定义

def nam2 = "2个单引号定义字符串"//普通定义
def helloExt = "hello : ${nam2}"//包含变量
def sum = "the sum is : ${3 + 2}"//包含表达式
复制代码

这种定义方式是可拓展,可包含变量/表达式等,相对是比较常用的一种

(3)3个单引号定义

def name1 = '''
        3个单引号定义字符串
        第一行
        第二行
        第三行
        {
            name:Davi
            age:boy
        }
'''
复制代码

这种定义方式可读性比较强,可以指定格式,如:json等

String 体验相关API

先定义下:

def str = "string1"
def str2 = "string2"
复制代码

字符串的扩充之,中心填充:

str.center(5, 'xx')
复制代码

左填充:

str.padLeft(5, 'aa')
复制代码

索引:

println str[0]//访问单个元素
println str[0..1]//访问0-1的元素
复制代码

闭包

###闭包的定义和调用 闭包,就是能够读取其他函数内部变量的函数 先来看看不带参数的定义和调用:

def closure1 = {
   println 'hello closure!'
}
closure1.call()
复制代码

带参数的定义和调用:

 def closure2 = {
  String name, int age -> println "hello ${name}"
}
closure2('closure???', 9)
复制代码

it 默认的参数的使用:

 def closure3 = {
    println "hello ${it}"
}
closure3.call("it 默认的参数...")
复制代码

带返回值的定义和调用:

def closure4 = {
   return '闭包返回值'
}
println closure4.call()
复制代码

闭包结合基本数据类型等的使用

和int的结合使用,求n的阶乘,不需要for循环,简洁的代码:

int fab(int num) {
    int result = 1
    //1循环到num
    1.upto(num, { n -> result *= n })
    return result
}
复制代码

string类型结合闭包,遍历字符

 void strFab() {
        def str = '2 and 3 is 5'
        str.each {
            String s -> println a
        }
 }
复制代码

闭包重要的3个变量

3个重要的变量:this,owner,delegate

this:代表闭包定义处的类

owner:闭包定义处的类/对象

delegate:任意对象,默认和'owner'一致

大部分情况下,三个关键字一致;

如果闭包中嵌套了闭包,那么'this'指向的是最外层的,'owner' 'delegate' 指向的是最近那一层的

 void demo() {
        //3个重要的变量
        def closure = {
            //闭包定义处的类,比如:PluginImpl.groovy
            println "closure this :" + this

            //闭包定义处的类/对象
            println "closure owner :" + owner

            //任意对象,默认和'owner'一致
            println "closure delegate :" + delegate
			
            def inner = {
                println "inner this :" + this
                println "inner owner :" + owner
                println "inner delegate :" + delegate
            }
        }
        closure.call()
}
复制代码

结尾

哈哈,该篇就写到这里(一起体系化学习,一起成长)

Tips

更多精彩内容,请关注 ”Android热修技术“ 微信公众号

分类:
Android
标签:
分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改