Work Better Than Yesterday!
官网上说groovy是一个多面性(multi-faceted)的java平台语言,它可以像jdk一样安装,也可以当做一个项目在maven那里进行依赖。对于本质还需要再认真理解一下。
我觉得Groovy就是一个脚本版的java,在哪里用到,我目前了解的就是gradle,还有以前在TM实习的时候,那里的推荐算法会用到。Groovy引入了闭包和元编程等出色功能,也是比较难理解的。
通过eclipse4.4安装plugin
http://dist.springsource.org/release/GRECLIPSE/e4.4/
本地安装
或者像maven一样下载bin包,然后配置环境变量就可以了。然后创建一个Test.groovy文件,直接用groovy命令就能运行了。
它会默认import一下这些包,所以可以直接使用这些包里面的类了:
java.io.*
java.lang.*
java.math.BigDecimal
java.math.BigInteger
java.net.*
java.util.*
groovy.lang.*
groovy.util.*
它还是多方法的(方法名相同),因为它是脚本语言的特性,方法在runtime的时候call,会根据实际的参数类型去调用不同的方法。
不能使用{}大括号来声明数组了,因为那是闭包,所以使用中括号[]。
注释和java一样,只不过多了一个Shebang line的注释,其实和shell的第一行一样。
#!/usr/bin/env groovy
出了java的那些关键字,还包括const def goto
正常的标识符规则应该和java一样,只不过在点以后可以使用关键字作为标识符,例如:
foo.as
foo.assert
foo.break
foo.case
foo.catch
然而groovy还有引号标识符(Quoted identifiers),这个就和php啊,js一样,其实有点像map里面的key是字符串,我觉得本质应该一样吧:
def map = [:]
map."an identifier with a space and double quotes" = "ALLOWED"
map.'with-dash-signs-and-single-quotes' = "ALLOWED"
def firstname = "Homer"
map."Simson-${firstname}" = "Homer Simson"
map.'''triple single quote'''
map."""triple double quote"""
map./slashy string/
map.$/dollar slashy string/$
三个单引号或者双引号的字符串可以是多行的,如下,String#stripIndent()方法就像java里面的trim一样效果。
定义多行变量,使用三个引号:
def var="""hello
world
groovy!"""
def startingAndEndingWithANewline = '''
line one
line two
line three
'''
println aMultilineString
println var
只有使用双引号的字符串才能使用占位符插值,占位符还能够是表达式,这个是GString,例如:
def name = 'Guillaume' // a plain string
def greeting = "Hello ${name}"
assert greeting.toString() == 'Hello Guillaume'
def sum = "The sum of 2 and 3 equals ${2 + 3}"
assert sum.toString() == 'The sum of 2 and 3 equals 5'
关于字符串在插值的时候会有闭包的表达式,还不懂,看了闭包以后在回头看,4.4.2。
GString作为参数传递的时候会隐式调用toString()方法。