Groovy是一种解释型语言。对? 所以我在想:当我们能够减轻翻译的负担时,是不是更好?
例如,在以下情况中:
def getStringy() {
def result = ...
...
result
}
Groovy会知道我们想要return result
,但是明确地写它是不是更高效?
另外,我们可以在指定方法参数的类型时更好吗?这里有些人不同意我的意见。例如:
void specialSort(list) {
// do sorting of a list
}
半冒号怎么样?公共关键字怎么样?这些问题是否会以任何方式影响绩效?
答案 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中也是有效的,所以这只是品味问题。