2011-09-06 59 views

回答

8

目的(我相信)是得到它以尽可能多地支持Groovy代码。

我相信,有一些不工作,包括目前的几个方面:

  1. Multiple assignment - doesn't compile
  2. spread-dot operator可能会导致问题in some situations
  3. .with {} doesn't work

但你总是可以解决这些问题,或者不标记需要他们的班级@Typed

+4

如果您将整个软件包标记为@Typed,则可以通过将单个类或方法标记为@Typed(TypePolicy.DYNAMIC)来选择退出 –

1

a)别担心。性能不是groovy或groovy ++的问题。使用这两种语言,你主要编写胶水逻辑。连接各种java库的代码。而这些库是用java编写的 - 所以它们全速运行。

有时候你会发现你已经在groovy中写了一大堆代码,并且你想增加一些额外的速度。没问题。 Groovy非常适合您的算法原型。由于Groovy具有类似java的语法,并且可以使用所有这些Java库,因此将原型转换为全速运行的Java库是没有问题的(是的,您必须手动编写它,但这意味着,只有'必须从你的groovy代码中删除所有这些shortcurts才能将它变成java)。 b)据我了解groovy ++,它通过注释工作。只有当你注释代码时,它才会被识别为groovy ++代码。所以它应该工作。但从所有这些答案中可以看出,目前没有太多人使用groovy ++,因为性能不是问题(请参阅:-)。

BTW:我想的是,常规++叉将很快被合并到标准常规行李箱...

+2

您是否真的认为性能不是问题? –

+0

是的。也许是因为我用它来做正确的事情。我不想在groovy中编写光线跟踪器,但我可以想象在常规或其中的一部分编写原型。但是当我编写Grails应用程序时(这就是我常用的Groovy),性能确实没有问题。 – rdmueller

+0

@ralf。仍然有人认为Grails非常缓慢,我们无法控制Grails中的每一件事情。意味着Grails可以更快地做东西,但我们不能深入?是真的! – testing31

0

的Groovy ++引入@Typed(TypePolicy.MIXED)注解,有什么用Groovy完全兼容。

通过使用@Typed(TypePolicy.DYNAMIC)或根本不使用@Typed,您将失去所有Groovy ++的优势。

MIXED TypePolicy优化静态位置(如果可能的话)。

1

@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代替。