Scala和Groovy之间的主要区别是什么?

Scala和Groovy之间的主要区别是什么?

它们都是面向JVM的面向对象语言,具有lambda和闭包,并与Java互操作。除此之外,它们是非常不同的。

Groovy是一种“动态”语言,不仅因为它是动态类型的,而且还因为它支持动态元编程。

Scala是一种“静态”语言,因为它是静态类型的,除了在Java中可以做的笨拙的事情之外,实际上没有动态元编程。注意,Scala的静态类型系统比Java的更统一、更复杂。

Groovy在语法上受Java的影响,但在语义上受Ruby等语言的影响更大。

Scala在语法上同时受到Ruby和Java的影响。它在语义上更多地受到Java、SML、Haskell和一种非常晦涩的面向对象语言gBeta的影响。

由于Groovy处理Java过载的方式,它具有“意外”的多个分派。

Scala仅支持单分派,但具有受SML启发的模式匹配,可以处理多分派应该处理的一些同类问题。但是,在多个分派只能对运行时类型进行分派情况下,Scala的模式匹配可以对运行时类型和/或值进行分派。模式匹配还包括语法上令人愉快的变量绑定。在Scala中编程时,单凭这一特性是多么令人愉悦,这一点怎么强调都不过分。

Scala和Groovy都支持一种混合形式的多重继承(尽管Scala将其称为特征)。

Scala既支持部分函数应用程序,也支持语言级别的curry,Groovy有一个笨拙的"curry“方法来处理部分函数应用程序。

Scala进行直接的尾递归优化。我不相信Groovy会这么做。这在函数式编程中很重要,但在命令式编程中就不那么重要了。

默认情况下,Scala和Groovy都是迫切需要评估的。但是,Scala支持按名称调用参数。Groovy不这样做--必须用闭包来模拟按名称调用。

Scala有“用于理解”,这是在其他语言中发现的列表理解的泛化(从技术上讲,它们是monad理解加上一点-介于Haskell的do和C#的LINQ之间)。

Scala没有“静态”字段、内部类、方法等概念--它使用单例对象。Groovy使用静态概念。

Scala没有像Groovy那样内置的算术运算符选择。在Scala中,您可以非常灵活地命名方法。

Groovy具有用于处理null的elvis运算符。Scala程序员更喜欢使用选项类型,而不是使用null,但是如果您愿意,可以很容易地在Scala中编写elvis运算符。

最后,有谎言,有该死的谎言,然后是基准。计算机语言基准游戏将Scala评为比Groovy快很多(从两倍到93倍),同时保持大致相同的源代码大小。benchmarks。

我相信有很多很多的不同之处我还没有讲到。但希望这能给你一个要点。

他们之间有竞争吗?是的,当然,但并不像你想的那么多。Groovy真正的竞争对手是JRuby和Jython。

谁会赢?我的水晶球和其他人一样破碎。

相关推荐

手机流量显示E是什么意思?怎么解决?
365bet在线足球开户

手机流量显示E是什么意思?怎么解决?

📅 07-22 👁️ 255
3种CAD文字大小修改方法及快捷键-CAD教程专题
365bet在线足球开户

3种CAD文字大小修改方法及快捷键-CAD教程专题

📅 08-22 👁️ 5769
阿里众包多久验收?验收流程是什么?
365bet在线足球开户

阿里众包多久验收?验收流程是什么?

📅 07-11 👁️ 5827