【发布时间】:2011-09-06 09:52:41
【问题描述】:
看到this link后,想试试Groovy++,但是有点担心;
Groovy 的所有语法在 Groovy++ 中都有效吗?
例如,我可以在 Groovy 中执行此操作:
def list = [1,2]
以上代码在 Groovy++ 中有效吗?
【问题讨论】:
看到this link后,想试试Groovy++,但是有点担心;
Groovy 的所有语法在 Groovy++ 中都有效吗?
例如,我可以在 Groovy 中执行此操作:
def list = [1,2]
以上代码在 Groovy++ 中有效吗?
【问题讨论】:
目标(我相信)是让它支持尽可能多的 Groovy 代码。
我认为目前有一些领域无法正常工作,包括:
但是你总是可以解决这些问题,或者不要将需要它们的类标记为@Typed
【讨论】:
http://groovy.dzone.com/articles/groovycomparetogroovy-part-1 处有与代码示例的差异列表
一些区别:
【讨论】:
【讨论】:
a) 别担心。 groovy 和 groovy++ 都不是性能问题。使用这两种语言,您主要编写胶合逻辑。连接各种java库的代码。这些库是用 java 编写的 - 所以它们可以全速运行。
有时您注意到您已经用 groovy 编写了一大段代码,并且想要增加一些额外的速度。没问题。 Groovy 非常适合对您的算法进行原型设计。由于 Groovy 具有类似 java 的语法并使用所有这些 java 库,因此将您的原型转换为全速运行的 java 库是没有问题的(是的,您必须手动编写代码,但这意味着,您只需'必须从你的 groovy 代码中删除所有这些快捷方式才能将其转换为 java)。
b) 据我了解 groovy++,它通过注释工作。仅当您注释代码时,它才会被识别为 groovy++ 代码。所以它应该工作。但是正如您从所有这些答案中看到的那样,目前使用 groovy++ 的人并不多,因为性能不是问题(参见 :-)。
顺便说一句:我猜 groovy++ fork 很快就会被合并到标准的 groovy 主干中......
【讨论】:
@Typed(TypePolicy.MIXED) 让想要使用 groovy++ 优化代码的开发人员的生活变得更加轻松。但是它并不完全支持 groovy 代码。
即使使用 @Typed(TypePolicy.MIXED) 的 groovy++ 代码兼容性仍然存在问题
例如groovy 风格类型转换(使用关键字“as”)
String foo = myUntypedFoo as String
需要改成
String foo = (String)myUntypedFoo
在闭包之外声明的变量也不能直接在这些闭包中使用:
@Typed(TypePolicy.MIXED)
def countMatches( List<String> bahList, String pattern ){
int counter = 0
bahList.each{ String bah ->
if (bah==pattern) counter++
}
}
需要改成java风格(违背了groovy++的目的)或者你必须使用引用对象。
groovy++ 对提高 groovy/grails 性能非常有用,但它肯定不是一个简单的方法,我不确定是否应该改用 java。
【讨论】:
Groovy++ 引入了@Typed(TypePolicy.MIXED) 注解,完全兼容Groovy。
使用@Typed(TypePolicy.DYNAMIC) 或根本不使用@Typed,你将失去所有Groovy++ 的优势。
如果可能,MIXED TypePolicy 会优化静态位置。
【讨论】: