看到this link后,我想尝试Groovy ++,但我有一个担心;Groovy ++的所有Groovy代码都有效吗?
所有Groovy的语法在Groovy ++中都有效吗?
比如我可以在Groovy中做到这一点:
def list = [1,2]
是上面的代码在Groovy ++有效吗?
看到this link后,我想尝试Groovy ++,但我有一个担心;Groovy ++的所有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代码中删除所有这些shortcurts才能将它变成java)。 b)据我了解groovy ++,它通过注释工作。只有当你注释代码时,它才会被识别为groovy ++代码。所以它应该工作。但从所有这些答案中可以看出,目前没有太多人使用groovy ++,因为性能不是问题(请参阅:-)。
BTW:我想的是,常规++叉将很快被合并到标准常规行李箱...
的Groovy ++引入@Typed(TypePolicy.MIXED)注解,有什么用Groovy完全兼容。
通过使用@Typed(TypePolicy.DYNAMIC)或根本不使用@Typed,您将失去所有Groovy ++的优势。
MIXED TypePolicy优化静态位置(如果可能的话)。
@Typed(TypePolicy.MIXED)让一个开发人员的生活变得更加简单,它希望使用groovy ++优化代码。但它不完全支持groovy代码。
甚至有使用@Typed(TypePolicy.MIXED)常规++代码兼容性
例如仍然发出常规样式型铸造(使用关键字“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 ++的目的),或者你必须使用Reference对象。
groovy ++对于改善groovy/grails性能非常有用,但它肯定不是一个简单的方法,我不确定,如果我应该用java代替。
如果您将整个软件包标记为@Typed,则可以通过将单个类或方法标记为@Typed(TypePolicy.DYNAMIC)来选择退出 –