Groovy脚本基础全攻略

Map是“键-值”对的集合,在Groovy中键key不一定是String,可以是任何对象(实际上Groovy中的Map就是java.util.Linke dHashMap)。如下:

//定义一个Map

def colors = [red: ‘#FF0000’, green: ‘#00FF00’, blue: ‘#0000FF’]

//获取一些指定key的value进行判断操作

assert colors[‘red’] == ‘#FF0000’

assert colors.green == ‘#00FF00’

//给指定key的对赋值value操作与判断

colors[‘pink’] = ‘#FF00FF’

colors.yellow = ‘#FFFF00’

assert colors.pink == ‘#FF00FF’

assert colors[‘yellow’] == ‘#FFFF00’

//判断Map的类型

assert colors instanceof java.util.LinkedHashMap

//访问Map中不存在的key为null

assert colors.unknown == null

//定义key类型为数字的Map

def numbers = [1: ‘one’, 2: ‘two’]

assert numbers[1] == ‘one’

对于Map需要特别注意一种情况,如下:

//把一个定义的变量作为Map的key,访问Map的该key是失败的

def key = ‘name’

def person = [key: ‘Guillaume’]

assert !person.containsKey(‘name’)

assert person.containsKey(‘key’)

//把一个定义的变量作为Map的key的正确写法—添加括弧,访问Map的该key是成功的

person = [(key): ‘Guillaume’]

assert person.containsKey(‘name’)

assert !person.containsKey(‘key’)

【工匠若水 [http://blog.csdn.net/yanbober](() 转载请注明出处。[点我开始Android技术交流](()】

3 运算符

=========

关于Groovy的运算符介绍类似于上面一样,我们重点突出与Java的不同点,相同点自行脑补。

Groovy支持**次方运算符,如下:

assert 2 ** 3 == 8

def f = 3

f **= 2

assert f == 9

Groovy非运算符如下:

assert (!true) == false

assert (!‘foo’) == false

assert (!‘’) == true

Groovy支持?.安全占位符,这个运算符主要用于避免空指针异常,譬如:

def person = Person.find { it.id == 123 }

def name = person?.name

assert name == null

Groovy支持.@直接域访问操作符,因为Groovy自动支持属性getter方法,但有时候我们有一个自己写的特殊getter方法,当不想调用这个特殊的getter方法则可以用直接域访问操作符。如下:

class User {

public final String name

User(String name) { this.name = name}

String getName() { “Name: $name” }

}

def user = new User(‘Bob’)

assert user.name == ‘Name: Bob’

assert user.@name == ‘Bob’

Groovy支持.&方法指针操作符,因为闭包可以被作为一个方法的参数,如果想让一个方法作为另一个方法的参数则可以将一个方法当成一个闭包作为另一个方法的参数。如下:

def list = [‘a’,‘b’,‘c’]

//常规写法

list.each{

println it

}

String printName(name){

println name

}

//方法指针操作符写法

list.each(this.&printName)

Groovy支持将?:三目运算符简化为二目,如下:

displayName = user.name ? user.name : ‘Anonymous’

displayName = user.name ?: ‘Anonymous’

Groovy支持*.展开运算符࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值