Groovy流水账-Groovy基础
程序员文章站
2022-07-14 16:00:00
...
Groovy针对循环处理提供了多种灵活方式,比起java来更简洁,充分体现了动态语言的灵活性。
1)针对int类型的循环使用upto来循环,代码如下:
2)如果你的循环从0开始,可以使用times。代码如下:
3)当然还有必不可少的for,while循环等等。代码如下:
Groovy的优雅的异常处理方式,就是无需特别地去处理异常。异常回自动抛到更高级别的类调用者去处理,而不必象java那样必须catch后再抛出或者通过在方法声明上使用throws。
Groovy还提供了很多其他简单的特性
1)return语句是可选的,如果方法的最后一个语句是判断语句,则除外
2)分号几乎是可选的,主要在特定的语意下必须写分号外,大部分情况都不必写分号
3)方法和类默认都是public的
4)?. 用来判断如果一个对象不为空,则调用方法,例如:
5)使用named parameters来初始化java bean,大部分的动态语言都提供此特性。
Groovy中定义JavaBean,代码摘自Programming Groovy
可以使用named parameter来初始化java bean。这段代码的输入如下:
对于第二段代码可以比较奇怪,方法调用传递的参数超出了方法声明中的参数个数,groovy会自动将key-value的参数集合起来作为方法的第一个参数,其他的按方法声明的顺序来进行赋值。
Groovy支持方法的可选的参数传递,代码如下:
如果在一个方法最后一个参数定义数组形式,则该参数也是可选的,可传可不传。
Groovy中的boolean运算为ture的情况:
1)true
2)集合不为空
3)char不为0
4)CharSequence的长度大于0
5)Enumeration有更多的元素
6)Iterator迭代器的hasNext
7)Number不是0
8)Map不为空
9)Matcher至少有一个匹配
10)Object数组的长度大于0
11)任何其他的对象引用不为null
Goovy的强大的操作符重载,1)可以对字母进行循环,代码如下
2)针对数组,进行<<将操作数移入数组中,代码如下:
Groovy针对java5提供了很多特性支持:自动装箱,for-each,enum,可变参数,静态导入,范型等等。Groovy同时还提供了自己的特别地方:==和java的equals一样,新的关键字(def,it,以及Range定义..),没有code block,更简单定义数组的方式(def array =[1,2])
1)针对int类型的循环使用upto来循环,代码如下:
1.upto(9) { println "$it" }
2)如果你的循环从0开始,可以使用times。代码如下:
5.times{ print "$it "}
3)当然还有必不可少的for,while循环等等。代码如下:
for(i =0; i< 3 ; i++){ print "$i " }
Groovy的优雅的异常处理方式,就是无需特别地去处理异常。异常回自动抛到更高级别的类调用者去处理,而不必象java那样必须catch后再抛出或者通过在方法声明上使用throws。
Groovy还提供了很多其他简单的特性
1)return语句是可选的,如果方法的最后一个语句是判断语句,则除外
2)分号几乎是可选的,主要在特定的语意下必须写分号外,大部分情况都不必写分号
3)方法和类默认都是public的
4)?. 用来判断如果一个对象不为空,则调用方法,例如:
def obj = null print obj.getClass()
5)使用named parameters来初始化java bean,大部分的动态语言都提供此特性。
Groovy中定义JavaBean,代码摘自Programming Groovy
class Robot { def type, height, width def access(location, weight, fragile) { println "Received fragile? $fragile, weight: $weight, loc: $location" } } robot = new Robot(type: 'arm' , width: 10, height: 40) println "$robot.type, $robot.height, $robot.width" robot.access(50, x: 30, y: 20, z: 10, true)
可以使用named parameter来初始化java bean。这段代码的输入如下:
arm, 40, 10 Received fragile? true, weight: 50, loc: ["x" :30, "y" :20, "z" :10]
对于第二段代码可以比较奇怪,方法调用传递的参数超出了方法声明中的参数个数,groovy会自动将key-value的参数集合起来作为方法的第一个参数,其他的按方法声明的顺序来进行赋值。
Groovy支持方法的可选的参数传递,代码如下:
def printGreetings(name, greetings = "Welcome"){ print "$name, Welcome." } printGreetings("Durex")
如果在一个方法最后一个参数定义数组形式,则该参数也是可选的,可传可不传。
Groovy中的boolean运算为ture的情况:
1)true
2)集合不为空
3)char不为0
4)CharSequence的长度大于0
5)Enumeration有更多的元素
6)Iterator迭代器的hasNext
7)Number不是0
8)Map不为空
9)Matcher至少有一个匹配
10)Object数组的长度大于0
11)任何其他的对象引用不为null
Goovy的强大的操作符重载,1)可以对字母进行循环,代码如下
for( i = 'a'; i < 'z'; i++){ print "$i" }
2)针对数组,进行<<将操作数移入数组中,代码如下:
def greetings = ["hello"] greetings << "welcome"
Groovy针对java5提供了很多特性支持:自动装箱,for-each,enum,可变参数,静态导入,范型等等。Groovy同时还提供了自己的特别地方:==和java的equals一样,新的关键字(def,it,以及Range定义..),没有code block,更简单定义数组的方式(def array =[1,2])