1,最好加上 return
groovy 方法(函数)在没有return语句的情况下,
默认把最后一条语句的求值结果作为返回值,但在带有 条件语句 的情况下
似乎有点让人迷惑,看下面的例子(判断一个对象是不是字符串):
def isString(str){ if(String.class.isInstance(str)){ "YES" }else{ "NO" } }
运行脚本
println isStr("hello")
打印出(Groovy 1.6以前): null
不过在Groovy 1.6以后将会打印出 YES,
修改方案(1):
def isString(str){ String.class.isInstance(str)?"YES":"NO" }
修改方案(2):
de isString(str){ if(String.class.isInstance(str)){ return "YES" }else{ return "NO" } }
个人感觉:如果不是实在懒得敲那几个字符,最好加上return,这样也会使程序的结构更加清楚。
2,方法(函数)调用的形式:
//第二个参数是一个函数 def static func(arg,callback){ callback(arg) }
运行下面的三行语句
func("hello",{println it}) func("hello"){println it} func "hello",{println it}
都会打印出:hello
调用一个方法(函数)就有三种方式,
我不讨论那种方式比较好,
但总感觉第二种调用方式怪怪的。。
看来Groovy的代码风格更是会千差万别了。
3,def 关键字
def 关键字用来定义方法,属性和本地变量。
def 定义的方法 默认 为 public java.lang.Object ×××()
如:
def func(){...}
对应的java方法为
public java.lang.Object func()
def定义的属性和本地变量 默认 为 null,赋值之后为
指向具体的对象。
4,Groovy不支持的一些java特性
(1)Groovy 不支持 内部类
(2)Groovy 不支持 java创建数组的方式
如 def ints = new int[]{1,2,3},
暂列两条。。