所有Groovy代码对Groovy++;?
看了之后,我想试试Groovy++,但我有一个顾虑 Groovy的所有语法在Groovy++中都有效吗 例如,我可以在Groovy中执行此操作:所有Groovy代码对Groovy++;?,groovy,groovy++,Groovy,Groovy++,看了之后,我想试试Groovy++,但我有一个顾虑 Groovy的所有语法在Groovy++中都有效吗 例如,我可以在Groovy中执行此操作: def list = [1,2] 上述代码在Groovy++中有效吗?应该有效,因为在Groovy++中,您可以: 静态和动态类型代码的简单混合 参考资料:目标(我相信)是让它支持尽可能多的Groovy代码 我认为目前有几个领域不起作用,包括: 这可能会引起问题 但是您可以始终解决这些问题,或者不将需要它们的类标记为@Typed下面是代码示例
def list = [1,2]
上述代码在Groovy++中有效吗?应该有效,因为在Groovy++中,您可以:
- 静态和动态类型代码的简单混合
但是您可以始终解决这些问题,或者不将需要它们的类标记为
@Typed
下面是代码示例的差异列表
其中一些差异:
- 更严格的编译时检查
- 使用ExpandoMetaClass不进行即时类型修改
- 闭包不能更改闭包代码之外的变量
- 无法直接访问私有方法 别担心。性能不是groovy和groovy++的问题。对于这两种语言,您主要编写粘合逻辑。连接各种java库的代码。这些库是用java编写的,所以它们可以全速运行 有时您会注意到,您已经在groovy中编写了大量代码,并且希望增加一些额外的速度。没问题。Groovy非常适合构建算法的原型。由于Groovy具有类似java的语法并利用了所有这些java库,因此将原型转换为全速运行的java库是没有问题的(是的,您必须手动编写代码,但这意味着,您“只”需要从Groovy代码中删除所有这些缺点即可将其转换为java) b) 据我所知,groovy++通过注释工作。只有在注释代码时,它才会被识别为groovy++代码。所以它应该会起作用。但是,从所有这些答案中可以看出,目前使用groovy++的人并不多,因为性能不是问题(请参见:-) 顺便说一句:我想groovy++fork很快就会合并到标准的groovy主干中…groovy++引入了@Typed(TypePolicy.MIXED)注释,它与groovy完全兼容 通过使用@Typed(TypePolicy.DYNAMIC)或根本不使用@Typed,您将失去Groovy++的所有优势 混合类型策略尽可能优化静态位置。@Typed(TypePolicy.MIXED)使希望使用groovy++优化代码的开发人员的生活更加轻松。但是,它并不完全支持groovy代码 即使使用@Typed(TypePolicy.MIXED),groovy++代码的兼容性仍然存在问题 e、 g.groovy样式类型转换(使用关键字“as”) 需要改成
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++
}
}
@Typed(TypePolicy.MIXED)
def countMatches(列表、字符串模式){
整数计数器=0
bahList.each{String bah->
if(bah==模式)计数器++
}
}
需要更改为java风格(与groovy++的目的背道而驰),或者必须使用引用对象
groovy++对于提高groovy/grails性能非常有用,但这肯定不是一种简单的方法,我也不确定是否应该使用java。如果将整个包标记为@Typed,则可以通过将单个类或方法标记为@Typed(TypePolicy.DYNAMIC)Yes来选择退出。也许是因为我用它做正确的事情。我不想用groovy编写光线跟踪器,但我可以想象用groovy或其中的一部分为它编写原型。但当我编写grails应用程序时(这正是我使用groovy的主要目的),性能真的没有问题。@ralf。仍然有人说Grails非常慢,我们无法控制Grails中的每一件事情。意味着Grails可以更快地完成任务,但我们不能深入?这是真的吗!有这些谈话,但我还没有遇到这些问题:-)买一辆卡车,抱怨它没有保时捷快。如果您真的需要速度,您可以随时使用java。深度:我用php和其他技术进行了10多年的web开发,几年前我转向了grails。我没有一个时刻无法控制或无法深入。这就是grails最好的一面:它使日常任务变得非常简单,并且仍然允许您深入研究。
@Typed(TypePolicy.MIXED)
def countMatches( List<String> bahList, String pattern ){
int counter = 0
bahList.each{ String bah ->
if (bah==pattern) counter++
}
}