Gradle阅读笔记-第二章groovy基础

Groovy是基于JVM虚拟机的一种动态语言,支持闭包,支持DSL

字符串

在Groovy中,单引号和双引号都可以定义一个字符串常量,但是单引号不能对字符串里的表达式做运算,单引号没有运算能力

集合

List定义及访问:

task pringList << {

       def numList =[1, 2, 3, 4, 5, 6];

       println numList.getClass().name

 

       pringln numList[1] // 访问第二个元素

       pringln numList[-1] // 访问最后一个元素

       pringln numList[1..3] // 访问第二个到第四个元素

 

       numList.each { // 迭代操作,each方法,该方法接受一个闭包作为参数,可以访问List中的每个元素

                pringln it

      } 

}

Map定义与访问:

task printlnMap << {

        def map1 =['width' : 1024, 'height' : 768]

        println map1.getClass().name

 

        println map1['width']

        pringln map1.height

 

        map1.each { // 被迭代的元素是一个Map.Entry

                println "Key:${it.key}, Value:${it.value}"

}

对于集合,还提供了诸如collect、find、findAll等便捷方法

方法

Groovy可以省略(),变成invokeMethod parm1、 parm2

task invokeMethod << {

       method1(1, 2)

       method 1, 2

}

def method(int a, int b) {

       println a+b

}

Groovy中带返回值的方法,return语句不是必须的,当没有return时,会将方法执行过程中最后一句代码作为其返回值

代码块---被花括号包围的代码,及闭包,Groovy允许其作为参数传递,

numList.each({println it}) // 呆板写法

numList.each({ // 格式化一下

        println it

})

Groovy规定,如果方法的最后一个参数是闭包,可以放到方法外面

numList.each(){

        println it

}

然后去掉括号就变成我们经常看到的样式

JavaBean

task helloJavaBean << {

        Person p = new Person()

        println "名字是:!${p.name}"

        p.name = "张三"

        pringln "名字是:!${p.name}"

        println "年龄是:!${p.age}" // 并不一定要定义成员变量才能作为类的属性访问,getter/setter方法也一样,但是不能修改age的值

}

class Person {

        private String name

        public int getAge() {

                12

        }

}

闭包

使代码灵活、轻量、可复用

实现一个类似each的闭包功能

task helloCosure << {

        customEach {

               println it

        }

        eachMap {k, v ->

                println "${k} is ${v}"

        }

}

def customEach(closure) { // closure用于接收一个闭包(代码块),如果只有一个参数,那就是我们的it变量

        for(int i in 1..10) {

                 closure(i)

        }

}

def eachMap(closure) {

        def map1 = ["name":"张三", "age":18]

        map1.each {

                colsure(it.key, it.value)

        }

}

Groovy闭包的强大之处在于它支持闭包方法的委托,其闭包邮thisObject、owner、delegate三个属性

thisObject其实就是构建这个脚本的上下文,它和脚本中的this对象是相等的。

delegate与owner默认情况下是相等的,但是delegate是可以被修改的

闭包内方法的处理顺序是thisObject>owner>delegate

在DSL中,比如Gradle,我们一般会指定delegate为当前的it,这样就可以对该it进行配置,或调用其方法:

task configClosure << {

        person {

                personName = "张三"

                personAge = 20

                dumpPerson()

        }

}

class Person {

        String personName

        int personAge

        def dumpPerson() {

                println "name is ${personName}, age is ${personAge}"

         }

}

def person(closure<Person> closure) {

        Person p = new Person()

        closure.delegate = p

        // 委托模式优先

        closure.setResolveStrategy(Closure.DELEGATE_FIRST);

        closure(p)

}

在使用person方法创建一个Person实例时,可以在闭包里直接对该Person实例配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的精简博客系统,源码+数据库+毕业论文+视频演示 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。以前企业对于博客信息的管理和控制,采用人工登记的方式保存相关数据,这种以人力为主的管理模式已然落后。本人结合使用主流的程序开发技术,设计了一款基于Springboot开发的精简博客系统,可以较大地减少人力、财力的损耗,方便相关人员及时更新和保存信息。本系统主要使用B/S开发模式,在idea开发平台上,运用Java语言设计相关的系统功能模块,MySQL数据库管理相关的系统数据信息,SpringBoot框架设计和开发系统功能架构,最后通过使用Tomcat服务器,在浏览器发布设计的系统,并且完成系统与数据库的交互工作。本文对系统的需求分析、可行性分析、技术支持、功能设计、数据库设计、功能测试等内容做了较为详细的介绍,并且在本文也展示了系统主要的功能模块设计界面和操作界面,并对其做出了必要的解释说明,方便用户对系统进行操作和使用,以及后期的相关人员对系统进行更新和维护。本系统的实现可以极大地提高企业的工作效率,提升用户的使用体验,因此在现实生活运用本系统具有很大的使用价值。 关键词:博客管理;Java语言;B/S结构;MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值