电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

在Groovy1.0中使用闭包和集合


发布日期:2023/6/23
 

闭包

闭包是很多动态语言提供的一个很方便的功能它有点像Java中的内部类不同的是闭包中只有一个方法但这个方法可以有任意个参数

java 代码

def closure = { param > println(hello ${param}) }closurecall(world!)

这段代码会输出hello world

闭包用{}括起>前面是参数后面是处理语句可以使用call调用也可以在{}后直接使用()来执行

闭包可以有多个参数各个参数用隔开如果只有一个参数的话可以省略不写可以使用关键字it来代表

我们可以把上面的例子像下面这样写

java 代码

closure = { println(hello ${it}) }(world)

或者

java 代码

closure = { paramparam>println(param+param) }(hello world)

上面的几种写法都会输出hello world

集合

()List

java 代码

def list = [ hello new javautilDate()]assert listsize() == assert list[]==assert listget() == hello

()Map

java 代码

def map = [name:James location:London]assert mapsize() == assert mapget(name) == Jamesassert map[location]==London

()循环

java 代码

def list = [ ]for (i in list) {print i}println()listeach{item>print item}println()[name:yanhuaaddr:beijing]each{println it}[name:yanhuaaddr:beijing]each{keyvalue>println ${key} ^_^ ${value}}

上面的运行的结果如下

name=yanhua

addr=beijing

name ^_^ yanhua

addr ^_^ beijing

()collect

遍历集合逐个传递给闭包处理后的结果返回给对应的项

java 代码

def value = [ llect { it * }assert value == [ ]

()find

根据闭包断言返回集合中找到的第一个项目

java 代码

def value = [ ]find { it > }

assert value ==

()findAll

根据闭包断言返回集合中所有找到的项目

java 代码

def value = [ ]findAll { it > }

assert value == [ ]

()inject

遍历集合第一次将传递的值和集合项目传给闭包将处理结果作为传递的值和下一个集合项目传给闭包依此类推

java 代码

def value = [ ]inject(counting: ) { str item > str + item }assert value == counting: value = [ ]inject() { count item > count + item }assert value ==

()every

如果集合中所有项目都匹配闭包断言就返回true否则返回false

java 代码

def value = [ ]every { it < }assert valuevalue = [ ]every { item > item < }assert ! value

()any

如果集合中任何项目匹配闭包断言就返回true否则返回false

java 代码

def value = [ ]any { it > }assert valuevalue = [ ]any { item > item > }assert value == false

()min/max

返回集合中的最小/最大项目(对象必须可比较)

java 代码

def value = [ ]max()assert value == value = [ ]min()assert value == value = [x y a z]min()assert value == a

()join

连接集合中的值成一个字符串

java 代码

def value = [ ]join()assert value ==

上一篇:jvm性能调优/垃圾回收器

下一篇:Dojo订阅/发布模拟淘宝到货提醒