将推断的关键字添加到Groovy

时间:2017-03-31 08:19:31

标签: groovy

Groovy是一种解释型语言。对? 所以我在想:当我们能够减轻翻译的负担时,是不是更好?

例如,在以下情况中:

def getStringy() {
   def result = ...
   ...

   result
}

Groovy会知道我们想要return result,但是明确地写它是不是更高效?

另外,我们可以在指定方法参数的类型时更好吗?这里有些人不同意我的意见。例如:

void specialSort(list) {
     // do sorting of a list
}

半冒号怎么样?公共关键字怎么样?这些问题是否会以任何方式影响绩效?

3 个答案:

答案 0 :(得分:1)

Groovy是一种编译语言。在执行之前,您的代码将被编译为正常的JVM兼容字节码类。

编写代码,以便您和其他人可以轻松阅读和理解代码。保留编译器的编译工作。

唯一的例外是,当您明确利用拥有动态代码的可能性时,例如使用GroovyShell执行自定义代码,作为字符串传递给程序。你可以在运行时完成它。它仍然是一个2步(编译,然后执行)过程,如果你想经常调用它们,编译结果可以很容易地被缓存。 在这种特殊情况下,您将更加关注如何使其安全,安全,以及如何加快编译过程。

答案 1 :(得分:1)

Groovy编译为Java Bytecode,然后在JVM上运行

所以,你的第一个陈述不正确

答案 2 :(得分:0)

  

Groovy是一种解释型语言。正确?

Groovy是一种编译语言。在执行代码之前,它会像java代码一样编译为正常的JVM兼容字节码类。

  

Groovy会知道我们想要返回结果但不是更多   是否能明确地写出来?

由于groovy避免使用样板代码,因此您不需要添加return语句(出于可读性目的,我个人更愿意编写return。)

Groovy知道无论函数的最后一行是什么,都要返回它。

  

声明变量的类型

Groovy是动态语言。

在Groovy中使用def时,实际的类型持有者是Object(因此您可以将任何对象分配给使用def定义的变量,并且如果声明方法返回def,则返回任何类型的对象。)

  

公共关键字怎么样?

Groovy认为类和方法是公开的。因此,您无需在任何地方使用公共修饰符。只有当它不公开时,才应该设置可见性修饰符。

如上所述,groovy给了我们避免样板代码的方法,我们可以这样使用它或者java代码在groovy中也是有效的,所以这只是品味问题。