我最近才知道groovy ++已经发布了,Groovy和Groovy ++的主要区别是什么?
我刚看了一段Groovy发明家 James Strachan 的视频,他继续热爱Scala.这让我想要了解更多关于Groovy的信息,这些信息引导我使用Groovy ++.Groovy ++是Groovy的静态类型和编译版本(显然是完全动态的).
我试图弄清楚什么是Groovy ++(0.9.1的最新版本?)与Scala(2.10的最新版本)形成鲜明对比.在活动的Groovy ++论坛没有任何关于最新版本的这是能够吸引多少信息非常最近的活动.
那么,Scala与Groovy ++有一个很好的简单比较/对比吗?我对Groovy本身不感兴趣(除了作为Groovy ++设计的基础),因为我想并排比较静态编译的功能.一个简单的优点/缺点(即权衡)列表基本上是我所寻求的,而不必进行数十到数百小时的研究和实验.
提前感谢您提供有关此对比度和比较查询的任何信息.
如果我理解正确Groovy是动态类型的,但由于它几乎是Java的超集,因此可以选择提供静态类型信息.如果只编写几个部分对性能至关重要的东西,同时避免使用多种语言的摩擦,这可能很有用.可以仅为性能关键部分提供类型注释.
在使用类似Java的子集和提供静态类型注释的函数/类中使用Groovy而不是Java的性能损失是什么?
我想更清楚地了解关于他们的论证类型的闭包.所以我会写类似的东西
List<Y> myCollect(List<X> list, Closure<X,Y> clos) { ... }
Run Code Online (Sandbox Code Playgroud)
我知道Groovy不会使用该类型信息,但Groovy ++可能会在编译时使用它.这可以实现(除了将其纳入评论)?
更新:标题可能听起来有误导性,但我认为上面的例子会让它更清晰.我有兴趣指定一个闭包的类型,它是某个函数的参数.假设,我想重新启动内置功能collect.所以我对写作感兴趣myCollect,而不是写作clos.我想要实现的是获取编译时错误
myCollect(['a', 'ab'], { it / 2 }) // compile error
myCollect(['a', 'ab'], { it.size() }) // OK
Run Code Online (Sandbox Code Playgroud) 我看到最近发布的Groovy 2.0包括可选的静态编译以及其他一些额外的好处,比如可选的静态类型检查.在做了一些搜索后,我找不到任何广泛的基准测试,将Groovy的性能(使用静态编译)与Java和Scala进行比较.有谁知道任何这样的性能比较?我们可以假设它与Groovy ++在它死之前是一样的吗?如果它的性能具有可比性,Groovy是否可以成为大型,性能关键型应用程序的可行替代方案?
看到这个链接后,我想尝试Groovy ++,但我有一个担心;
Groovy的所有语法在Groovy ++中都有效吗?
例如,我可以在Groovy中执行此操作:
def list = [1,2]
Run Code Online (Sandbox Code Playgroud)
以上代码在Groovy ++中是否有效?
我偶然发现了常规的++并发现它非常有趣.
不幸的是,它似乎没有进一步发展?
该项目是否已移动并且现在有另一个名称?由于改进了groovy,它是否已经过时了?还是刚刚停产?
感谢您的任何见解!
我有一个类,其闭包定义为:
void everyPixel( closure ){
for( def x : 0..width-1 )
for( def y : 0..height-1 )
closure( x, y )
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我将@CompileStatic注释应用于它,它将不会编译(它在我添加闭包之前做了),并带有以下消息:
Groovyc:[静态类型检查] - 找不到匹配方法java.lang.Object #call(java.lang.Integer,java.lang.Integer).请检查声明的类型是否正确以及方法是否存在.
如何为此创建类型签名以便静态编译?到目前为止,我在Google上的所有点击都说明了如何传递闭包,而不是如何定义接受闭包的方法.: - /
我刚刚阅读了一些关于Groovy ++的文章,似乎是Groovy本身的一个巨大改进.
有谁知道如何在Grails和IntelliJ中使用Groovy ++?我可以看到最新版本的IntelliJ支持Groovy和Groovy ++