Gradle从入门到实战 - Groovy基础(by任玉刚)读后笔记
注:这篇文章是任玉刚老师公众号里的,此处是我的读后笔记
一、基本语法
1、在Groovy中,通过 def 关键字来声明变量和方法
2、在Groovy中,类型是弱化的,所有的类型都可以动态推断
3、在Groovy中,很多东西都是可以省略的,比如
- 语句后面的分号是可以省略的
- 变量的类型、方法的返回值类型、方法参数类型也是可以省略的
- 方法调用时,括号也是可以省略的
- 甚至语句中的return都是可以省略的
4、在Groovy中,对象默认的修饰符为public
二、String
在字符串中,可用或者或者{}将文本当成变量看待,并返回变量的值
三、Closure
闭包作为一种特殊的数据类型而存在,闭包可以作为方法的参数和返回值,也可以作为一个变量而存在,也可以当做函数一样使用;
当做函数时,有两种调用方式,一种是直接传参,一种是调用call函数;
如果闭包不指定参数,那么它会有一个隐含的参数 it;
四、List
def test = [100, “hello”, true]
如下:
test.size返回3
test[10]返回null,也就是说它不存在越界问题,而是直接返回null
test[1]=”world”会将”hello”替换为”world”;test[10]=”haha”,此时test.size返回11,test[7]返回null
test[10]=3后再test<<200,此时test.size返回12,而test[11]就是3
五、Map
def map = ["id":1,"name":"lei"]
println map["id"]
println map.name
Map的遍历:如果我们传递的闭包是一个参数,那么它就把entry作为参数;如果我们传递的闭包是2个参数,那么它就把key和value作为参数。
def map = ["id":1,"name":"ryg"]map.each{key,value->println key+":"+value}map.each{println it.key+":"+it.value}
六、普通文件的访问
eachLine方法也是支持1个或2个参数的,一个参数是line,两个参数是line和lineNo
def file = new File("a.txt")file.eachLine{line,lineNo->println lineNo+line}file.eachLine{line->println line}
七、xml文件的访问
<resources><declare-styleable name="CircleView"><attr name="circle_color" format="color">#98ff02</attr><attr name="circle_size" format="integer">100</attr><attr name="circle_title" format="string">renyugang</attr>
</declare-styleable></resources>
def xml = new XmlParser().parse(new File("attrs.xml"))println xml['declare-styleable'].@name[0]println xml['declare-styleable'].attr[2].text()
八、Groovy的其他特性
1、在Groovy中,所有的Class类型,都可以省略.class
2、在Groovy中,Getter/Setter和属性是默认关联的。只有有属性就有Getter/Setter;同理,只要有Getter/Setter,那么它就有隐含属性。
3、在Groovy中,当对同一个对象进行操作时,可以使用with
Book bk = new Book()
bk.with {id = 1name = "android art"press = "china press"
}
4、在Groovy中,可以将变量当做判断条件,如下:
if (name != null && name.length > 0) {}可以替换为:
if (name) {}
5、在Groovy中,三元表达式可以更加简洁,如下
def name = new Book()
def result = name ?: "unknow"//?和:之前不能有空格,省略了?和:之间的name
println result
6、在Groovy中,非空判断可以用?表达式,如下
if (order != null) {if (order.getCustomer() != null) {if (order.getCustomer().getAddress() != null) {System.out.println(order.getCustomer().getAddress());}}
}可以简写为:
println order?.customer?.address
7、assert断言
在Groovy中,可以使用assert来设置断言,当断言的条件为false时,程序将会抛出异常
8、switch方法
在Groovy中,switch方法变得更加灵活,可以同时支持更多的参数类型:
def x = 1.23
def result = ""
switch (x) {case "foo": result = "found foo" // lets fall throughcase "bar": result += "bar"case [4, 5, 6, 'inList']: result = "list"breakcase 12..30: result = "range"breakcase Integer: result = "integer"breakcase Number: result = "number"breakcase { it > 3 }: result = "number > 3"breakdefault: result = "default"
}
9、==和.is()
==就是比较两个值是否相同,相当于java中的equals()
如果需要比较对个对象是否是同一个,需要使用.is()
Object a = new Object()
Object b = a.clone()assert a == b
assert !a.is(b)
Gradle从入门到实战 - Groovy基础(by任玉刚)读后笔记相关推荐
- Gradle系列【2】Groovy基础语法篇
有道无术,术尚可求,有术无道,止于术. 本篇参考w3cschool. 文章目录 Groovy简介 特点 基本语法 Hello World 导入语句 注释 分号 关键词 标识符 数据类型 变量 运算符 ...
- ECharts从入门到实战,基础属性全知道
作者:谭东 Echarts是百度公司开源的,这个大家应该都知道,和Echarts对标的国内的就是阿里的DataV了. 先看下Echarts的简介. ECharts是一款基于JavaScript的数据可 ...
- 微信小程序入门到实战(1)-基础知识
1.微信小程序介绍 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或搜一下即可打开应用. 1 ...
- 5-Python3从入门到实战—基础之数据类型(列表-List)
Python从入门到实战系列--目录 列表定义 list:列表(list)是Python内置的一种数据类型,list是一种有序的集合,索引从0开始,可以进行截取.组合等: //创建列表list1 = ...
- Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观
Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java ...
- 零基础学python实战-Python3.6零基础入门与实战 PDF 带源码视频版
给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python 3.6.入门.实战方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小518.9 MB,王启明编写,目前豆瓣.亚马逊 ...
- Gradle Groovy 基础语法 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 《零基础掌握 Python 入门到实战》笔记
Python 零基础掌握 Python 入门到实战笔记 文章目录 Python 内置对象类型 基本交互语句 常用内置函数 整数与浮点数 基本数学运算 高级数学运算 字符串 序列 索引 切片 成员函数 ...
- Python 零基础入门到实战(一)笔记:内置对象、浅拷贝、深拷贝、计算圆面积、凯撒密码、英文大小写转换、输入国家打印出国家名和首都、输入数字英文输出、统计句子中的字母数量、猜随机数
Python入门到实战(一) 为什么写这篇文章 Part 1 入门部分 什么是编程语言? Python的优势 目前应用 特点 Part 2 6种内置对象 1 整数.浮点数 2 字符串 3 列表 4 元 ...
- Android自定义控件开发入门与实战(1)绘图基础
今天从leader那里拿到了启舰大神写的<自定义控件开发入门与实战>这本书,据说看完了,至少写起自定义view也不会慌. 最重要的是多练,所以这本书基本设计到的我没有涉及过的控件开发(之前 ...
最新文章
- WebSocket客户端连接不上和掉线的问题以及解决方案
- 深度学习(九)caffe预测、特征可视化python接口调用
- why carbon 13?
- asp按钮跳转页面代码_重磅更新!全新Web编辑页面、编辑规则快速跳转、状态栏变色、富文本再次升级!...
- MyBatis运行原理(三)接口式编程及创建代理对象原理分析
- 我整理了10张超酷炫的可视化大屏,新手也能做,秀到没朋友
- libusb获取usb设备的idVendor(vid),idProduct(pid),以及Serial Number
- python发送邮件带附件_python 发送带附件邮件
- html表格两种颜色,html – 表格细胞两个颜色背景对角线
- nero 2015 installing
- 华章教育pdf计算机,AB-PLC华章培训全集.pdf
- 三线压力传感器原理_压力传感器 压力传感器原理
- 网络基础---NAT穿越技术
- vscode鼠标滚轮调整字体大小
- 字节跳动实习生转正工资_上海实习 | 字节跳动 广告设计实习生
- arcgis影像怎么去黑边_arcgis遥感图像去黑边林林种种(至少7种方法)
- 计算机网络数据传输率的基本单位是,计算机网络中,数据的传输速度常用的单位是什么...
- 华为使用计算机投屏要打开什么,华为Mate20手机怎么投屏到电脑上呢
- 禁用win10无用服务,提高Win10系统游戏性能!
- python读取文件详解_python 文件读取方法详解