1、 集合
(1)List (java.util.List)
list = [1, 2, 'hello', new java.util.Date()]
assert list.size() == 4
assert list.get(2) == 'hello'
注意:一切都是对象(数字会自动转换)
(2)Map (java.util.Map)
map = ['name':'James', 'location':'London']
assert map.size() == 2
assert map.get('name') == 'James'
(3)遍历集合
list = [1, 2, 3]
for (i in list) { println i }
2、 闭包(Closures)
l 闭包类似Java的内类,区别是闭包只有单一的方法可以调用,但可以有任意的参数
closure = { param | println("hello ${param}") }
closure.call("world!")
closure = { greeting, name | println(greeting + name) }
closure.call("hello ", "world!")
l 闭包用“{}”括起,“|”前面是参数,后面是处理语句,使用call调用
l 第一个例子演示了在字符串内使用参数的形式:${param}
l 第二个例子演示了多参数形式:用“,”分隔参数
l 如果只有一个参数,可以不写,而使用缺省的参数“it”,如下面的例子:
closure = { println "hello " + it }
closure.call("world!")
3、each
l 遍历集合,逐个传递给闭包
[1, 2, 3].each { item | print "${item}-" }
l 上面例子的输出结果是:1-2-3-
4、collect
l 遍历集合,逐个传递给闭包,处理后的结果返回给对应的项
value = [1, 2, 3].collect { it * 2 }
assert value == [2, 4, 6]
5、find
l 根据闭包断言,返回集合中找到的第一个项目
value = [1, 2, 3].find { it > 1 }
assert value == 2
6、findAll
l 根据闭包断言,返回集合中所有找到的项目
value = [1, 2, 3].findAll { it > 1 }
assert value == [2, 3]
7、inject
l 遍历集合,第一次将传递的值和集合项目传给闭包,将处理结果作为传递的值,和下一个集合项目传给闭包,依此类推
value = [1, 2, 3].inject('counting: ') { str, item | str + item }
assert value == "counting: 123"
value = [1, 2, 3].inject(0) { count, item | count + item }
assert value == 6
8、every
l 如果集合中所有项目都匹配闭包断言,就返回true,否则返回false
value = [1, 2, 3].every { it < 5 }
assert value
value = [1, 2, 3].every { item | item < 3 }
assert ! value
9、any
l 如果集合中任何项目匹配闭包断言,就返回true,否则返回false
value = [1, 2, 3].any { it > 2 }
assert value
value = [1, 2, 3].any { item | item > 3 }
assert value == false
10、 min/max
l 返回集合中的最小/最大项目(对象必须可比较)
value = [9, 4, 2, 10, 5].max()
assert value == 10
value = [9, 4, 2, 10, 5].min()
assert value == 2
value = ['x', 'y', 'a', 'z'].min()
assert value == 'a'
11、 join
l 连接集合中的值成一个字符串
value = [1, 2, 3].join('-')
assert value == '1-2-3'
12、 yield
l 在Python和Ruby中通过yield语句创建“yield”风格的iterators,在Groovy同样有效,只是使用的是闭包
class Foo{
static void main(args) {
foo = new Foo()
for (x in foo.myGenerator) {
print("${x}-")
}
}
myGenerator(Closure yield) {
yield.call("A")
yield.call("B")
yield.call("C")
}
}
l 例子的输出结果是:A-B-C-
l Cloures原型可以省略,call和括号同样可选,这样更象Python/Ruby
class Foo {
myGenerator(yield) {
yield "A"
yield "B"
yield "C"
}
static void main(args) {
foo = new Foo()
foo.myGenerator { println "Called with ${it}" }
}
}
相关推荐
Flex开发入门是一个面向初学者的主题,它涉及到Adobe Flex这一开源框架的使用,用于构建富互联网应用程序(RIA)。Flex是基于ActionScript和MXML,这两种语言允许开发者创建具有交互性、动态性和高性能的Web应用程序...
标题中的“论坛转帖工具.rar”表明这是一个用于在论坛之间转移帖子的软件工具,通常用于帮助用户方便地将一个论坛的帖子内容复制到另一个论坛,可能是为了分享信息、讨论或保存重要的帖子。这类工具可能包括自动抓取...
UBB论坛转帖圣手.exeUBB论坛转帖圣手.exe
【贴吧转帖工具】是一种专为百度贴吧用户设计的便捷工具,主要用于提高用户在贴吧中的互动效率。通过这款工具,用户可以实现一键转帖和一键8经验签到的功能,极大地简化了传统操作流程,节省了用户的时间,提升了...
本篇文章将详细探讨“编辑人员转帖去水印工具”,并介绍如何使用名为Teorex Inpaint的1.0.0.2版本的软件来实现这一目标。 首先,我们要理解什么是水印。水印通常是指在图像或视频中添加的半透明标记,它可以是文字...
X2转帖工具、采集工具”是针对这个平台设计的辅助软件,主要用于帮助论坛管理员或用户批量发布帖子和采集内容,提高论坛内容更新的效率。 一、批量发帖功能 1. 自动化发布:此工具可以自动化地创建和发布帖子,...
1.修改自Convert X转帖工具 2.新增批量替换关键词(原来是单个词语替换,可以利用这个功能删除一些网站的防转帖代码) 3.批量随机新增文字(新增内容可自定义,从而实现伪原创) 4.cookie记录替换和新增关键词(避免每次...
"转帖工具插件 for PHPwind 7.5 正式版" 是专门为 PHPwind 7.5 版本设计的一个功能插件,旨在提供便捷的帖子转移功能,帮助管理员或者用户将内容从一个地方轻松移动到另一个地方,而无需直接编辑论坛的原始文件。...
《一键转帖功能插件 for 帝国CMS 6.0 GBK utf8 V1.0》 本文将深入探讨“一键转帖功能插件”在帝国CMS 6.0系统中的应用与实现,该插件适用于GBK及UTF-8编码环境,旨在提升网站内容的分享与传播效率。我们将从安装...
标题和描述中的“世界编程大赛第一名写的程序”这一知识点,实际上指向了计算机科学与编程竞赛领域的一个重要概念:即在高水平的编程比赛中,优胜者所编写的代码往往蕴含着高级算法、数据结构以及编程技巧。...
转帖图片提取工具可以对论坛图片附件信息进行清除,只保留图片代码,操作很简单,推荐有需要转帖图片工具的朋友下载 转帖图片提取工具使用方法: 将IP138上处理过的东西复制到上方的编辑框内,点击只要图片,下面...
HTML2UBBMaxcj 是一款专为Softii论坛设计的转帖工具,它主要用于将HTML格式的帖子内容转换成UBB代码,以便在论坛中更好地显示和分享。UBB(Universal BBCode)是一种轻量级的标记语言,常用于网络论坛,与HTML类似,...
"一键转帖功能插件 for 帝国CMS v1.0.rar" 是一个专为帝国CMS设计的扩展工具,其主要目标是简化用户在网站上分享内容的过程,提高用户体验。这个插件允许用户轻松地将网站上的文章或信息复制并转发到其他平台,如...
标题《【转帖】4412嵌入式开发板学习笔记(一)》和描述《新手在进行开发学习前,建议先看01-迅为电子开发板入门视频。对开发板和开发环境有一定的了解后,不要盲目接线开机。以下是个人的一点经验,和大家分享一下...
高三政治教学总结(转帖)教学工作总结.doc
UBB转帖王是一种插件,它能够帮助用户快速去除复制下来的网页内容中的无用空格、文字干扰码、水印和空行等,优化复制内容,便于分享和阅读。 【其他浏览器解决方案】 除了火狐,其他浏览器如搜狗、遨游和世界之窗也...
J2ME全方位开发讲解基础汇总[转帖] 一、J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成...
看到论坛里帖子由精美的图片想转过来,或者批量提取地址时很好用