浏览 2512 次
锁定老帖子 主题:关于 Groovy 的一些见解
精华帖 (0) :: 良好帖 (1) :: 新手帖 (21) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-01
最后修改:2009-07-01
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}, 暂列两条。。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-01
在Groovy 1.6之后
def isString(str){ if(String.class.isInstance(str)){ true }else{ false } } 是不会返回null的 |
|
返回顶楼 | |
发表时间:2009-07-01
Groovy 1.7将支持内部类
|
|
返回顶楼 | |
发表时间:2009-07-01
JohnnyJian 写道 在Groovy 1.6之后
def isString(str){ if(String.class.isInstance(str)){ true }else{ false } } 是不会返回null的 果然 ,看来我的版本老了(groovy的eclipse插件) |
|
返回顶楼 | |
发表时间:2009-07-01
直接写
def isString(str){ String.class.isInstance(str) } 不就可以了吗? 何必还要绕个圈子去if(true) return true; else return false;呢 |
|
返回顶楼 | |
发表时间:2009-07-01
最后修改:2009-07-01
fcoffee 写道 直接写
def isString(str){ String.class.isInstance(str) } 不就可以了吗? 何必还要绕个圈子去if(true) return true; else return false;呢 恩 ,确实 当时写这个例子的时候 ,是想让这三个例子在return的部分对比度强一些 还是换一个例子吧 |
|
返回顶楼 | |
发表时间:2009-08-09
我觉得,有一段时间内,groovy的语法糖(简洁代码)更受青睐,这些细节,估计应用起来不主要吧
|
|
返回顶楼 | |