Skip to end of metadata
Go to start of metadata

准备开始

设置 Java 运行环境

Groovy 要用到 Java,所以你需要一个适用的 Java 版本(groovy 1.6 支持 JDK 1.4 或更高版本,groovy 1.7 以上版本至少要使用 JDK 1.5)。如果你还没有安装,可以参考以下步骤:

  • http://java.sun.com 下载合适的 Java 版本。
  • 运行安装程序。
  • 设置 JAVA_HOME 环境变量。Windows 中设置步骤如下:
    • 打开控制面板
    • 点击“高级”标签页
    • 点击“系统变量”按钮
    • 添加一个名为“JAVA_HOME”值为 Java 安装目录(我的是 C:\Program Files\Java\jdk1.5.0_04)的新变量。
    • 还可以将 %JAVA_HOME%\bin 添加到 path
      (注意:除了设置系统环境变量,你还可以建一个 '.bat' 或 '.cmd' 文件来设置环境变量。这样你想要运行 Java 时就可以双击这个文件来设置环境变量。如果你不明白是什么意思,就按上面说的做。)

设置 Groovy 运行环境

下载 Groovy 的安装程序或二进制文件,然后按照安装说明进行安装。(如果 Groovy 的安装目录中空格会出问题,所以你不能使用默认的安装目录“c:\Program Files\Groovy”,可以安装到其它像“c:\Groovy”这样的目录)

或者

  • 下载 Groovy 发行版本,复制到某个目录。
  • 解压缩 groovy 包到某个目录,我的是 C:\dev\groovy-1.0-jsr-06
  • 设置 GROOVY_HOME 环境变量。Windows 中设置步骤:
    • 添加一个名为 GROOVY_HOME,值为 groovy 安装目录(我的是 C:\dev\groovy-1.0-jsr-06)的环境变量。
    • 打开一个命令窗口,输入“set”并回车检查环境变量设置是否正确。
  • 可以将 %GROOVY_HOME%\bin 添加到 path
  • 双击 Groovy 安装目录的 bin 目录中的 groovyConsole.bat,如果不能用,打开一个命令窗口,并转到 bin 目录,执行 groovyConsole.bat 看出现什么错误信息。如果是没有找到 Groovy 的部分功能,设置 GROOVY_HOME 可能会有帮助

设置可选的 jar 文件

你可能想添加一些 jar 文件,用于 Groovy modules(详见 module 文档)或者要在 Groovy 中使用的 Java 类。可能会是下面这些:

名称

来源

描述

jtds-version.jar

http://jtds.sourceforge.net

SQL Server 和 Sybase 的数据库驱动

hsqldb-version.jar

http://www.hsqldb.org/

HSQLDB(纯 Java 数据库)的数据库驱动

让 Groovy 识别附加 jar 文件的推荐方法是将它们放到一个预定义的目录。Groovy 的安装目录中应该有一个 groovy-starter.conf 文件。确认这个文件中的


没有注释掉。user.home 系统变量由操作系统设定(我的是 C:\Document and Settings\paul)。这样附加的 jar 文件放到 .groovy/lib 目录。
(注意:你也可以设置 CLASSPATH 变量,确保这里设置了需要的附加 jar files,尽管 Groovy 并不需要使用 CLASSPATH 变量。)

2. Hello, World

在 groovyConsole 窗口的上半部分中输入


然后输入 <CTRL-R>。
注意信息在操作系统的控制台窗口(在 groovyConsole 后面的黑色窗口)中打印出来,而且在 groovyConsole 的下半部分中显示:


“groovy>”开头的行就是控制台中输入的文字。“null”是表达式求值的结果。打印信息的表达式并没有“值”,所以在 groovyConsole 中显示“null”。
接下来试一些实际的值。将控制台中的文字替换为:


或者你喜欢的数据表达式,然后按 <CTRL-R>(后面不再提示按 <CTRL-R>,我相信你知道按)。现在显示在 groovyConsole 下半部分的“值”就有含义了。

变量

可以为后面用到的变量赋值。试一下:


List 和 Map

Groovy 语言原生地支持这两种重要的数据类型,list 和 map(list 可以像 Java 中的数组那样操作)。list 用来存放有序的数据集合。例如一个整数 list 可能类似这样:


可以用方括号(下标从0开始)访问 list 中的条目。


输出结果是:


可以用“size”方法获得 list 的长度:


输出:


不过,通常并不需要知道长度,因为不像 Java,循环 list 中的所有数据推荐使用“each”方法,这将在“Code as Data”章节说明。
另一个内置的数据结构是 map。map 用来存放“关系数组”或“字典”。这是任意类型的具名数据的无序集合。例如,假设我们想存放姓名和对应的 IQ 成绩,可能是:


注意存放在 map 中的每个值的类型都不同。Brett 的是整数,Pete 的是字符串,而 Andrew 的是浮点数。可以通过两种方式访问 map 中的值:


输出:


向 map 添加数据的语法和向 list 添加类似。例如,如果 Pete 重新进行了 IQ 测试并且得了 3 分,我们可以:


这样再次获取值,它就会是 3 了。


输出 3。
此外,你可以用下面的方式创建一个空的 map 或 list:


要想确认它们是否为空,可以这样:


输出的 list 和 map 大小会是 0。

选择执行(Conditional Execution)

任何程序语言都有一个重要的特性,那就是根据不同的条件执行不同的代码。最简单的方法就是使用‘if’结构,例如:


不用太在意第一行代码,那只是判断当前时间是上午还是下午。剩下的代码执行流程是:首先对表达式求值,然后根据结果是‘true’还是‘false’来执行第一块或第二块代码。参考下面布尔表达式的章节。
注意‘else’代码块并不是必须的,但‘then’代码块是必须的:


布尔表达式

在大多数程序语言中都有一种用来表示真值(truth values)的特殊数据类型,‘true’和‘false’。最简单的布尔表达式就是这两个值。布尔值可以像其它数据类型那样保存在变量中:


复杂一点的布尔表达式使用布尔操作符:


其中大多数可能容易理解。相等使用‘==’是为了和赋值操作符‘=’区别开。与相等对应的操作符是‘!=’,也就是“不等于”
一些示例:


布尔表达式特别适合与‘if’结构一起使用。例如:


经常需要测试变量或表达式是否为空(没有值)。比如想看一下 map 中是否存在指定的 key:


通常 null 用来表示没有值。

调试及排错技巧

  • 通过 myVar.getClass() 的方式打印关注变量的类(class)。然后查阅这个类(class)的相关文档。
  • 如果不能很好地掌握复杂表达式,可以把它拆分为多个简单的表达式,并且对各个简单表达式求值,最后把它们组合成复杂的表达式。
  • 尝试重启 groovyConsole,这样就会清除所有的变量,你可以重新开始。
  • 查阅 Groovy用户手册 中你感兴趣的主题。

如果你是 Java 开发人员

  • No labels