3、集合<o:p></o:p>
Groovy支持集合、List、Map和数组<o:p></o:p>
(1)Lists<o:p></o:p>
l 下面是创建List的例子,[]表示空List表达式<o:p></o:p>
list = [5, 6, 7, 8]<o:p></o:p>
assert list.get(2) == 7<o:p></o:p>
assert list instanceof java.util.List<o:p></o:p>
<o:p></o:p>
emptyList = []<o:p></o:p>
assert emptyList.size() == 0<o:p></o:p>
emptyList.add(5)<o:p></o:p>
assert emptyList.size() == 1<o:p></o:p>
l 每个List表达式都是java.util.List的实现<o:p></o:p>
(2)范围(Ranges)<o:p></o:p>
l Range允许创建连续值的列表<o:p></o:p>
l 由于Range扩展java.util.List,所以Range可以作为List使用<o:p></o:p>
l 使用..的Range是包括两个边界,使用...的Range只包括开始边界,而不包括结束边界<o:p></o:p>
// an inclusive range<o:p></o:p>
range = 5..8<o:p></o:p>
assert range.size() == 4<o:p></o:p>
assert range.get(2) == 7<o:p></o:p>
assert range instanceof java.util.List<o:p></o:p>
assert range.contains(5)<o:p></o:p>
assert range.contains(8)<o:p></o:p>
<o:p></o:p>
// lets use an exclusive range<o:p></o:p>
range = 5...8<o:p></o:p>
assert range.size() == 3<o:p></o:p>
assert range.get(2) == 7<o:p></o:p>
assert range instanceof java.util.List<o:p></o:p>
assert range.contains(5)<o:p></o:p>
assert ! range.contains(8)<o:p></o:p>
l Range可以用于实现java.lang.Comparable的Java对象<o:p></o:p>
// an inclusive range<o:p></o:p>
range = 'a'..'d'<o:p></o:p>
assert range.size() == 4<o:p></o:p>
assert range.get(2) == 'c'<o:p></o:p>
assert range instanceof java.util.List<o:p></o:p>
assert range.contains('a')<o:p></o:p>
assert range.contains('d')<o:p></o:p>
assert ! range.contains('e')<o:p></o:p>
l Range可以用于循环遍历<o:p></o:p>
for (i in 1..10) {<o:p></o:p>
println "Hello ${i}"<o:p></o:p>
}<o:p></o:p>
(3)Maps<o:p></o:p>
l 下面是创建Map的例子,[:]表示空Map表达式<o:p></o:p>
map = ["name":"Gromit", "likes":"cheese", "id":1234]<o:p></o:p>
assert map.get("name") == "Gromit"<o:p></o:p>
assert map.get("id") == 1234<o:p></o:p>
assert map instanceof java.util.Map<o:p></o:p>
<o:p></o:p>
emptyMap = [:]<o:p></o:p>
assert emptyMap.size() == 0<o:p></o:p>
emptyMap.put(5, "foo")<o:p></o:p>
assert emptyMap.size() == 1<o:p></o:p>
assert emptyMap.get(5) == "foo"<o:p></o:p>
l Map可以象beans一样操作,但key值(类似属性名)必须为有效的String标识<o:p></o:p>
map = ["name":"Gromit", "likes":"cheese", "id":1234]<o:p></o:p>
assert map.name == "Gromit"<o:p></o:p>
assert map.id == 1234<o:p></o:p>
<o:p></o:p>
emptyMap = [:]<o:p></o:p>
assert emptyMap.size() == 0<o:p></o:p>
emptyMap.foo = 5<o:p></o:p>
assert emptyMap.size() == 1<o:p></o:p>
assert emptyMap.foo == 5<o:p></o:p>
(4)使用下标操作符<o:p></o:p>
l 可以在字符串、Lists、Maps...中使用下标进行索引<o:p></o:p>
text = "nice cheese gromit!"<o:p></o:p>
x = text[2]<o:p></o:p>
assert x == "c"<o:p></o:p>
assert x.class == String<o:p></o:p>
sub = text[5..10]<o:p></o:p>
assert sub == 'cheese'<o:p></o:p>
<o:p></o:p>
map = ["name":"Gromit", "likes":"cheese", "id":1234]<o:p></o:p>
assert map['name'] == "Gromit"<o:p></o:p>
<o:p></o:p>
list = [10, 11, 12]<o:p></o:p>
answer = list[2]<o:p></o:p>
assert answer == 12<o:p></o:p>
<o:p></o:p>
list = 100..200<o:p></o:p>
sub = list[1, 3, 20..25, 33]<o:p></o:p>
assert sub == [101, 103, 120, 121, 122, 123, 124, 125, 133]<o:p></o:p>
l 可以使用下标操作符更新项目<o:p></o:p>
list = ["a", "b", "c"]<o:p></o:p>
list[2] = "d"<o:p></o:p>
list[0] = list[1]<o:p></o:p>
list[3] = 5<o:p></o:p>
assert list == ["b", "b", "d", 5]<o:p></o:p>
l 可以使用负索引从最后开始计数<o:p></o:p>
相关推荐
### Groovy用户指南知识点解析 #### 一、Groovy与Java类定义的相似性与差异 **相似性:** - Groovy的类定义语法与Java非常相似,支持类方法(static)和实例方法。 - 类成员可以有public、protected、private访问...
### Groovy用户指南知识点解析 #### 一、Groovy简介 Groovy是一种灵活的面向对象编程语言,它为Java平台提供了强大的脚本能力,并且能够与现有的Java代码无缝集成。Groovy不仅支持传统的面向对象编程特性,还支持...
### Groovy 入门指南知识点解析 #### 一、Groovy与Grails简介 - **Groovy**: 是一种运行在Java平台上的灵活的面向对象编程语言。Groovy的设计旨在提高开发者的生产力,它具备简洁的语法,同时兼容现有的Java代码和...
2. **groovy用户指南.doc** - 这个指南可能是更深入的学习资源,涵盖了Groovy的高级特性。这可能包括闭包(Closure)的使用,元编程(Metaprogramming)的概念,GroovyShell和GroovyConsole的使用,以及如何利用...
3. `grails-app/views`:存储视图文件,通常是 GSP(Groovy Server Pages),用于渲染用户界面。 4. `grails-app/services`:存放业务逻辑服务。 5. `grails-app/conf`:配置文件,如 `application.properties` 和 `...
- **模块**:介绍如何使用Groovy的各种模块,如用户指南、高级用法指南等。 - **FAQ**:常见问题解答部分涵盖了开发者可能遇到的问题及其解决方案。 - **测试指南**:详细介绍如何使用Groovy进行单元测试、集成测试...
- `docs`:文档,包括API参考和用户指南,帮助开发者了解Groovy的特性和用法。 - `lib`:库文件,包含Groovy运行时环境所需的JAR文件,可能包括核心库、标准库和其他依赖项。 - `src`:源代码,开发者可以查看Groovy...
- **文档**:可能包括API文档、用户指南和开发者参考,帮助开发者了解和使用该版本的Groovy。 - **示例代码**:可能包含一些示例脚本来展示Groovy的特性和用法。 - **源代码**:虽然名为“binary”,但有时也会包含...
- **docs**:可能有API文档和用户指南。 - **src**:可能包含Groovy源码,供开发者参考学习。 - **conf**:可能包含配置文件,如Groovy的类路径设置。 - **examples**:可能包含示例代码,帮助用户快速上手。 使用...
2. **docs** 目录:存放Groovy的API文档和用户指南,提供了详细的语言参考和示例,对学习和使用Groovy很有帮助。 3. **lib** 目录:包含了Groovy运行时所需的JAR文件,包括Groovy核心库、标准库以及与其他库(如Ant...
### Groovy DSL:基于领域的特定语言开发指南 #### Groovy简介 Groovy是一种基于Java平台的灵活、强大的脚本语言,它与Java高度兼容,能够直接调用Java库中的类和方法,反之亦然。这种无缝集成使得Groovy成为一种极...
总结,"Grails-开源框架---使用指南.pdf"和"Groovy入门经典(中文).pdf"这两本书将帮助读者深入理解Grails框架和Groovy语言,从而更好地开发基于JVM的现代Web应用程序。通过学习这两本书,开发者可以掌握如何利用...
- **内容:** 列出了 Groovy 社区的各种资源,包括邮件列表、用户组等。 - **适用场景:** 寻求帮助或参与 Groovy 社区。 13. **示例代码 (Cookbook Examples)** - **内容:** 包含了一系列实际应用场景中的 ...
文档通常包括API参考、用户指南、教程以及开发者信息,这些都是理解和学习Groovy的关键资源。以下是一些关于Groovy 1.8.9的知识点: 1. **动态类型**:Groovy支持静态和动态类型,动态类型使得代码更简洁,编写速度...
- 文档:包括API文档和用户指南,帮助开发者了解和使用Groovy。 - 示例代码:展示Groovy的基本用法和特性。 通过解压"groovy-binary-1.8.9.zip",你可以安装并配置Groovy环境,然后利用这个强大的语言进行开发。...
5. **文档和示例**:SDK通常会包含一份详尽的用户指南、API文档和教程,帮助新用户快速上手。这些文档会解释Groovy的基本语法、特性以及如何与其他Java技术(如Spring框架)集成。 6. **源代码**:对于开发者来说,...
5. **groovy用户指南**:这份文档可能是一个详细的用户手册,包含了Groovy的安装步骤、环境配置、开发工具的选择和使用,以及日常开发中可能遇到的问题和解决方案。 6. **wiki-snapshot.pdf**:这可能是一个Groovy...
这本用户指南还并不完善, 就像 Gradle 一样还在开发当中. 在这本指南中, Gradle 的一些功能并没有被完整的展示出来. 一些内容的解释也并不是十分的清楚, 或者假设关于 Gradle 你知道得更多. 我们需要你的帮助来完善...
3. **GroovyConsole**:一个图形用户界面工具,用于编写、运行和调试Groovy脚本。 4. **GroovyDoc**:类似于JavaDoc,用于生成Groovy代码的API文档。 5. **类库和依赖**:包含Groovy运行时所需的类库和其他依赖,使...