Groovy基础知识
Groovy中需要明白的知识点
变量定义通常有以下两种方式,一种是直接指定变量类型,另一种则不指定变量类型,直接使用def来定。 int intValue println intValue //结果:0 def str = 'hello' println str //结果:hello 动态类型绑定def donamic = 1 println donamic.class //结果:class java.lang.Integer donamic = 'hello' println donamic.class //结果:class java.lang.String donamic = false println donamic.class //结果:class java.lang.Boolean 多重赋值(类似ES6的解构)def list = [1,2,'c'] def a,b,c (a,c) = list println a //结果:1 println b //结果:2 println c //结果:c for循环//original for(x=0; x<2; x++){ println x //结果:0,1 } //range for(x in 1..3){ println x //结果:1,2,3 } //list for(x in [1,3]){ println x //结果:1,2,3 } //map def map = ['a':1,'b':2,'c':3] for(x in map){ println x.value //结果:1,2,3 } //string def hello = 'hello' for(x in hello){ println x //结果:h,e,l,o } 注意,在for语句中的变量不用定义,当然你定义也行。 列表在Groovy中定义集合很简单,你只要通过如下方式定义即可 def numbers = [1,3] println numbers.size() //结果:3 你可以通过numbers[i]这种方式来访问列表中的每项,例如: def numbers = [1,3] println numbers[0] //结果:1 println numbers[-1] //结果:3,-1表示从列表后面向前访问的第一项 numbers[3] = 4 //添加一项 println numbers //结果:[1,3,4] numbers << 5 println numbers //结果:[1,4,5] 通过上述的例子可以看出,你既可以通过numbers[i]这种方式来添加一个列表项,也可以通过 numbers<<5这种方式来添加列表项 映射你可以通过以下方式来定义一个映射或者访问映射。 def colors = [red:'#ff0000',green:'#00ff00',blue:'#0000ff'] println colors.red //结果:#ff0000 println colors.'red' //结果:#ff0000 println colors."red" //结果:#ff0000 println colors['green'] //结果:#00ff00 println colors["green"] //结果:#00ff00 colors.yellow = '#ffff00' //增加键值对 println colors //结果:[red:#ff0000,green:#00ff00,blue:#0000ff,yellow:#ffff00] 通过上述的列子可以看出,既可以通过colors.red,colors[‘red’]这种方式来读取映射的值,也可以通过这种方式来增加键值对。 闭包闭包其实就是一段可执行的代码集合,所以里面可以包括正常的赋值,循环等语句,定义一个简单的闭包如下: def closure = {1} println closure() // 结果:1 println closure.call() //结果:1 从这里可以看出闭包的返回值为闭包中代码的最后一行的值,如果最后一行没有返回值,那么闭包的返回值为null。 当然你可以给闭包传递一个参数 def implicitParamClosure = {it-> println it } def explicitParamClosure = {para-> println para } implicitParamClosure('Hello') //结果:Hello explicitParamClosure.call('World') //结果:World 关于闭包,由于这个是Groovy的一个重要类型,并且在Gradle工具中大量使用,所以会在另外写一章进行详细说明。 类class Song{ def name def artist String toString() { "name = ${getName()},artist = ${artist}" } } def song = new Song() song.name = 'Dangerous' song.setArtist 'Jackson' println song //结果:name = Dangerous,artist = Jackson 通过上面的代码示例,你可以看到类中的成员变量默认会生成setXXX()和getXXX()函数。 Groovy中默认有两种构造函数,一个是无参构造函数,另一个是map类型的构造函数。 def song = new Song([name:'Dangerous',artist:'Jackson']) //或者你可以写成 def song = new Song(name:'Dangerous',artist:'Jackson') println song //结果:name = Dangerous,artist = Jackson 从这里看出,Groovy中的类定义比Java简单多了,不用定义构造函数和get,set函数,这样可以提高代码开发效率。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |