Grails 带和不带def关键字的方法参数
假设我们有以下方法:Grails 带和不带def关键字的方法参数,grails,groovy,Grails,Groovy,假设我们有以下方法: def myMethodWithParameters(param1, def param2, Object param3) { ... } 使用def关键字和使用Object作为参数类型有什么区别? 在参数中使用def关键字和不使用任何类型/关键字有什么区别? 到目前为止,我所知道的并不能完全回答这个问题: def关键字用于允许动态类型。 因此,您甚至可以在其中放置一个对象[] def关键字可用于使变量仅在当前范围内可用,而不是全局可用 Quick很好地解释了
def myMethodWithParameters(param1, def param2, Object param3) {
...
}
使用def关键字和使用Object作为参数类型有什么区别?
在参数中使用def关键字和不使用任何类型/关键字有什么区别?
到目前为止,我所知道的并不能完全回答这个问题:
关键字用于允许动态类型。 因此,您甚至可以在其中放置一个def
对象[]
关键字可用于使变量仅在当前范围内可用,而不是全局可用def
void doSomething(def param1, def param2) { }
首选:
void doSomething(param1, param2) { }
但正如我们在上一篇文章中提到的
在文档的第节中,通常最好键入您的方法
参数,以便帮助编写代码文档,并且
用于代码完成或利用静态类型检查的IDE
或者Groovy的静态编译功能
Groovy遵循的一般规则是:
如果您知道所期望或返回的类型,请将该类型放入定义中。如果只接受字符串
,请将类型添加到参数中(与返回值相同)。对于构成“公共”API一部分的方法(即:如果其他类或人员将要使用该方法),这是双重的
如果它只是内部的,或者接受一系列的值类型,那么将参数保留为非类型,让Groovy对其进行排序…这是好消息:您缺少哪些位?第二点?@tim_yates你的最后一个链接成功了!提供完整答案,赢取carma!:)