【问题标题】:Method arguments with and without def keyword带和不带 def 关键字的方法参数
【发布时间】:2018-02-08 10:46:55
【问题描述】:

假设我们有以下方法:

def myMethodWithParameters(param1, def param2, Object param3) {
    ...
}

使用 def 关键字和使用 Object 作为类型参数有什么区别

使用 def 关键字和不使用任何类型/关键字作为参数有什么区别


到目前为止我所知道的并没有完全回答这个问题:

  • def 关键字用于允许动态类型。 所以你甚至可以在里面放一个Object[]
  • def 关键字可用于使变量仅在当前范围内而不是全局范围内可用

【问题讨论】:

标签: grails groovy


【解决方案1】:

快速link to the docs 很好地解释了这一点:

定义无类型参数的方法时,可以使用 def 但是 它不是必需的,所以我们倾向于省略它们。所以而不是:

void doSomething(def param1, def param2) { }

喜欢:

void doSomething(param1, param2) { }

但正如我们在最后提到的 文档的部分,通常最好键入您的方法 参数,以帮助记录您的代码,并帮助 用于代码完成或利用静态类型检查的 IDE 或 Groovy 的静态编译功能。

我使用 Groovy 遵循的一般规则是:

如果您知道您期望或返回的类型,则将该类型放入定义中。如果只接受String,则将类型添加到参数中(与返回值相同)。这对于构成“公共”API 一部分的方法(即:如果其他类或人将要使用该方法)来说是双重的。

如果它只是内部的,或者接受一系列值类型,则不要输入参数,让 Groovy 对其进行排序...

【讨论】:

    猜你喜欢
    • 2013-08-06
    • 2014-11-26
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    相关资源
    最近更新 更多