注:这篇文章是任玉刚老师公众号里的,此处是我的读后笔记

一、基本语法
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任玉刚)读后笔记相关推荐

  1. Gradle系列【2】Groovy基础语法篇

    有道无术,术尚可求,有术无道,止于术. 本篇参考w3cschool. 文章目录 Groovy简介 特点 基本语法 Hello World 导入语句 注释 分号 关键词 标识符 数据类型 变量 运算符 ...

  2. ECharts从入门到实战,基础属性全知道

    作者:谭东 Echarts是百度公司开源的,这个大家应该都知道,和Echarts对标的国内的就是阿里的DataV了. 先看下Echarts的简介. ECharts是一款基于JavaScript的数据可 ...

  3. 微信小程序入门到实战(1)-基础知识

    1.微信小程序介绍 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或搜一下即可打开应用. 1 ...

  4. 5-Python3从入门到实战—基础之数据类型(列表-List)

    Python从入门到实战系列--目录 列表定义 list:列表(list)是Python内置的一种数据类型,list是一种有序的集合,索引从0开始,可以进行截取.组合等: //创建列表list1 = ...

  5. Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观

    Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java  ...

  6. 零基础学python实战-Python3.6零基础入门与实战 PDF 带源码视频版

    给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python 3.6.入门.实战方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小518.9 MB,王启明编写,目前豆瓣.亚马逊 ...

  7. Gradle Groovy 基础语法 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. 《零基础掌握 Python 入门到实战》笔记

    Python 零基础掌握 Python 入门到实战笔记 文章目录 Python 内置对象类型 基本交互语句 常用内置函数 整数与浮点数 基本数学运算 高级数学运算 字符串 序列 索引 切片 成员函数 ...

  9. Python 零基础入门到实战(一)笔记:内置对象、浅拷贝、深拷贝、计算圆面积、凯撒密码、英文大小写转换、输入国家打印出国家名和首都、输入数字英文输出、统计句子中的字母数量、猜随机数

    Python入门到实战(一) 为什么写这篇文章 Part 1 入门部分 什么是编程语言? Python的优势 目前应用 特点 Part 2 6种内置对象 1 整数.浮点数 2 字符串 3 列表 4 元 ...

  10. Android自定义控件开发入门与实战(1)绘图基础

    今天从leader那里拿到了启舰大神写的<自定义控件开发入门与实战>这本书,据说看完了,至少写起自定义view也不会慌. 最重要的是多练,所以这本书基本设计到的我没有涉及过的控件开发(之前 ...

最新文章

  1. WebSocket客户端连接不上和掉线的问题以及解决方案
  2. 深度学习(九)caffe预测、特征可视化python接口调用
  3. why carbon 13?
  4. asp按钮跳转页面代码_重磅更新!全新Web编辑页面、编辑规则快速跳转、状态栏变色、富文本再次升级!...
  5. MyBatis运行原理(三)接口式编程及创建代理对象原理分析
  6. 我整理了10张超酷炫的可视化大屏,新手也能做,秀到没朋友
  7. libusb获取usb设备的idVendor(vid),idProduct(pid),以及Serial Number
  8. python发送邮件带附件_python 发送带附件邮件
  9. html表格两种颜色,html – 表格细胞两个颜色背景对角线
  10. nero 2015 installing
  11. 华章教育pdf计算机,AB-PLC华章培训全集.pdf
  12. 三线压力传感器原理_压力传感器 压力传感器原理
  13. 网络基础---NAT穿越技术
  14. vscode鼠标滚轮调整字体大小
  15. 字节跳动实习生转正工资_上海实习 | 字节跳动 广告设计实习生
  16. arcgis影像怎么去黑边_arcgis遥感图像去黑边林林种种(至少7种方法)
  17. 计算机网络数据传输率的基本单位是,计算机网络中,数据的传输速度常用的单位是什么...
  18. 华为使用计算机投屏要打开什么,华为Mate20手机怎么投屏到电脑上呢
  19. 禁用win10无用服务,提高Win10系统游戏性能!
  20. python读取文件详解_python 文件读取方法详解

热门文章

  1. 根据列表内车牌号,统计各省市车牌占有量
  2. android x86 精简版,逆天!Windows7终极纯净版x86,仅239MB | 殁漂遥
  3. 全能音乐助手 激活_全能音乐助手
  4. Python自制成语接龙小游戏
  5. c# 图像识别 车辆型号【百度AI】
  6. 30封外贸邮件模板,外贸人速收藏!
  7. JFreechart从入门到放弃
  8. 音乐推荐系统协同过滤算法解释
  9. jdk 7 官方下载
  10. Android——ViewHolder的作用与用法