Skip to end of metadata
Go to start of metadata

准备工作

在运行文中提到的代码前,最好先看一下:

你或者有兴趣的一些进阶文章:

第一个 Groovy 程序

在命令行中运行:

概述

Groovy 类编译成 Java 的字节码,所以 Groovy 类与 Java 类是一一对应的。
事实上 Groovy 类可以在 Java 代码中正常使用,因为它本来也是一个 Java 类。

操作集合或许是学习 groovy 的一个简单方法。In Groovy List (java.util.List) and Map (java.util.Map) are both first class objects in the syntax. 可以通过以下方法他那一个对象 List

注意这些都是对象(或者是可以 auto-boxing 的数据类型)。创建 Map

集合的迭代非常简单

你可以通过集合辅助方法(helper methord)或者闭包来操作集合。

闭包

Closures are similar to Java's inner classes, except they are a single method which is invokable, with arbitrary parameters. A closure can have as many parameters as you wish...

Icon

上面这句话不太明白,估计说的应该是 Java 的匿名类吧。

闭包和 Java 中的匿名类类似,都只有一个可调用的方法,可以使用任意参数。闭包可以使用多个参数

如果在 -> 符号前没有指定参数,可以使用默认参数名‘it’,例如

我们可以通过闭包更简洁地操作集合 (arrays, maps, strings, files, SQL connections and so forth) 例如

注意: 如果闭包是方法的最后一个参数,它的定义可以与在圆括号的外面。因此下面的代码的有效的:

集合和字符串有很多辅助方法(helper methord)。

each

通过闭包进行迭代

collect

collect the return value of calling a closure on each item in a collection
采集集合中的每个数据调用闭包后的返回值

find

查找第一个满足条件的数据

findAll

查找所有满足条件的数据

inject

allows you to pass a value into the first iteration and then pass the result of that iteration into the next iteration and so on. This is ideal for counting and other forms of processing
允许传递一个参数到第一个迭代中,并且将前一个迭代的输出传递到下一个迭代。下面是一个计数和其它形式的处理

还有两个新方法用来在集合中处理布尔逻辑:

every

如果所有数据都满足条件则返回 true

any

只要有一个数据满足条件就返回 true

其它的用手类包括:

max / min

返回集合中的最大/最小值 - 对于可比较的对象

join

把集合中的数据连接成一个字符串

  • No labels