这一个文集主要是为了翻译Groovy语言的文档的,因为我们知道Gradle是基于groovy语言的,所以我们有必要来学习这个语言,我们会把文档一步一步来翻译,如果大家有兴趣或者有发现错误都可以指出。
介绍
Groovy...
- 是一种基于java虚拟机,灵活,动态的语言。
- 集成了java的强大之处,且同时拥有例如Python,Ruby,Smalltalk的一些强大特征。
- 对于java开发者可以零学习曲线地使用到现代编程特性。
- 针对健壮性和性能提供了静态类型检查和静态编译代码。
- 支持领域特定语言和其他精简的语法来使你的代码更易读和易维护。
- 强大的原生类型处理,面向对象特性,Ant DSL,使你的shell编写和编译脚本更精简。
- 当开发web, GUI, 数据库或者控制台代码时通过减少一些框架性的代码来提高开发效率。
- 支持unit 测试和模拟开箱即用的思想来简化测试。
- 和现有的java类和库无缝集成。
- 直接编译成java字节码所以你可以在任何能使用java的地方使用它。
1.Groovy语言规范
1.1.语法
这个章节涵盖了Groovy编程语言的语法。它的语法由java语法产生,并且增加了一些特定的结构,特定的简写。
1.1.1.注释
单行注释
单行注释以//
开头,并且能在行的任何位置。从//
开始,到一行结束,都被认为是注释的部分。
// a standalone single line comment
println "hello" // a comment till the end of the line
多行注释
多行注释以/*
开头,并且能在行的任何位置 。以/*
开头,包括新的行,直到第一个*/
结束都被认为是注释的部分。多行注释可以放于声明的开始或者声明的中间。
/* a standalone multiline comment
spanning two lines */
println "hello" /* a multiline comment starting
at the end of a statement */
println 1 /* one */ + 2 /* two */
GroovyDoc 注释
和多行注释类似,GroovyDoc 注释也是多行的,但是它是以/**
开始以*/
结束。在第一个GroovyDoc 注释行之后的新行可以选择添加*
或者不添加,这不是强制的。这些注释跟下面这些相关:
- 类型定义(类,接口,枚举,注解)
- 字段和属性的定义
- 方法的定义
虽然编译期并不关心GroovyDoc 注释跟上面的语言元素相关,但是你自己要保持正确的注释习惯。
/**
* A Class description
*/
class Person {
/** the name of the person */
String name
/**
* Creates a greeting method for a certain person.
*
* @param otherPerson the person to greet
* @return a greeting message
*/
String greet(String otherPerson) {
"Hello ${otherPerson}"
}
}
GroovyDoc(Groovy文档)遵循跟javaDoc一样的约定,所以你能使用跟javaDoc一样的标签。
Shebang(#!) 行
除了单行注释,还有一种特殊的行注释,它就是shebang行。如果你已经安装了Groovy的发布版并且把groovy
命令已经配置到PATH的话,那么UNIX 系统会直接通过命令行来运行脚本。
#!/usr/bin/env groovy
println "Hello from the shebang line"
注意:字符#
必须是文件的首字符,如果缩进的话也会报错。
1.1.2.关键字
下面表列出了所有Groovy语言中的关键字。
1.1.3.标识符
普通标识符
标识符可以以字符,$,或者下划线开头,但是不能以数字开头。
一个字符能在下面这些范围:
- 'a' to 'z' (ascii 表的小写字符)
- 'A' to 'Z' (ascii 表的大写字符)
- '\u00C0' to '\u00D6'
- '\u00D8' to '\u00F6'
- '\u00F8' to '\u00FF'
- '\u0100' to '\uFFFE'
下面这些字符能包括特定的字母和数字。
这里有一些正确标识符的例子:
def name
def item3
def with_underscore
def $dollarStart
但是下面这些是非法的标识符:
def 3tier
def a+b
def a#b
所有的关键字跟上.
号也是正确的标识符。
引用标识符
引用标识符是以.
开始的。例如person.name
中的name部分可以用person."name"
和person.'name'
来引用。有趣的是一些特定标识符包含合法的字符在java语言规范中是禁止的,但是在Groovy规范的引用中是允许的。比如破折号,空格,感叹号等:
def map = [:]
map."an identifier with a space and double quotes" = "ALLOWED"
map.'with-dash-signs-and-single-quotes' = "ALLOWED"
assert map."an identifier with a space and double quotes" == "ALLOWED"
assert map.'with-dash-signs-and-single-quotes' == "ALLOWED"
正如我们下面在 following section on strings会看到的,Groovy 提供了不同的字符常量,这些字符常量都允许在.
后面。
map.'single quote'
map."double quote"
map.'''triple single quote'''
map."""triple double quote"""
map./slashy string/
map.$/dollar slashy string/$
纯字符的字符串和Groovy的GStrings (嵌套字符串)不同的是,后面这种情况,嵌套字符串在整个字符标识符的后面插入:
def firstname = "Homer"
map."Simpson-${firstname}" = "Homer Simpson"
assert map.'Simpson-Homer' == "Homer Simpson"