Android Gradle学习之路笔记(二)

Groovy基础

概念:是基于JVM虚拟机的一种动态语音

2.1字符串

①单引号:产量字符串

②双引号:具备运算能力"${}",例如:"双引号的变量计算:${name}"

2.2 集合

概念:完全兼容了java的集合。

  1. List 

      

task prinList <<{
        def numList={1,2,3,4,5}
        println numList.getClass().name

        println numList[1]
        println numList[-1]
        println numList[1..3]
        
        numList.each{
                println it
        }
}

 实例中:数组下标不仅有正数,还可以是负数,还提供了each的迭代方法。接收一个闭包作为参数,能访问List的每个元素。

   2. Map

task printlnMap <<{

    def map1={'width':1024,'height':768}
    println map1.getClass().name

    println map1['width']
    println map1.height

    map1.each{
                println "Key:${it.key},Value:${it.valuel}"
               }
    }

Map的访问也很灵活,只不过它是一个K.V键值对,所以定义也很简单。采用map[key],或者map.key,都能快速取出。

each的迭代也比较方便

扫描二维码关注公众号,回复: 5125412 查看本文章

3.方法 

    1.括号是可以省略的

task invokeMethod <<{
    method1(1,2)
    method1 1,2
}

def method1(int a,int b){
    println a+b
}

   2.return是可以不写的

def method2(int a,int b){
    if(a>b){
        a   
     }else{
        b    
            }
}

默认会把最后一行当做返回值

2.3 代码块是可以作为参数传递的

代码块- 被花括号包围的代码(闭包)

//基本写法
numList.each({println. it})

//当方法最后一个参数是闭包的时候,可以放到方法外面,省略括号,放到花括号里面
numList.each{
    println it
}

2.4 javaBean

这里的Bean可以省略get/set方法

task HelloJavaBean <<{
    Person p=new Person()

    println "名字是:${p.name}"
    p.name="陈建仁"
    println "名字是:${p.name}"
    println "年龄是:${p.age}"
}

class Person{
    private String name
    public int getAge(){
            12
           }
}

虽然没定义age成员,但是又定义getAge方法,我们同样可以取到该值,但是,不可以set。因为没有set方法

2.5 闭包

是groovy的一个很重要的特性。是DSL的基础,其实就是一段代码块

1.向闭包传递参数

task helloClosure <<{

    //使用自己定义的闭包
    customEach{
        println it

        }


def customEach(closure){
        for(int i in 1..10){
                closuer(1)
            }
        }
}

我们定义了一个customEach用于接收闭包,只有一个参数

接下来我们来举个多个参数的例子

task helloClosure <<{


eachMap{k,v ->
     println "${k} is ${v}"
}


def eachMap(closure){

    def map1=["name":"张三","age":12]
    map1.each{
            closure(it.key,it.value)
            }
        }

}

2.闭包的委托

在执行的时候是有优先级的:thisObject>owner>delegate

当我们设置了委托优先后,可以在闭包里面直接对person实例配置

3 DSL

Domain Specific Language.领域特定语言

猜你喜欢

转载自blog.csdn.net/XHLINYU/article/details/86688980