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 = 1
    name = "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 through
    case "bar": result += "bar"
    case [4, 5, 6, 'inList']: result = "list"
    break
    case 12..30: result = "range"
    break
    case Integer: result = "integer"
    break
    case Number: result = "number"
    break
    case { it > 3 }: result = "number > 3"
    break
    default: result = "default"
}

9、==和.is()
==就是比较两个值是否相同,相当于java中的equals()
如果需要比较对个对象是否是同一个,需要使用.is()

Object a = new Object()
Object b = a.clone()

assert a == b
assert !a.is(b)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值