返回介绍

2. 可选择性使用的 return 关键字

发布于 2025-01-04 00:44:55 字数 1057 浏览 0 评论 0 收藏 0

在 Groovy 中,方法主体内部的最后一个求值表达式不必非得带上 return 关键字就能返回。所以对于短方法和闭包而言,忽略这个关键字会显得更简洁。

String toString() { return "a server" }
String toString() { "a server" }

但有时在使用变量时,在两行上分别出现了两次这个变量,让人看起来会不很舒服。

def props() {
  def m1 = [a: 1, b: 2]
  m2 = m1.findAll { k, v -> v % 2 == 0 }
  m2.c = 3
  m2
}

在这种情况下,在最后的表达式前换行,或者使用 return ,可读性就会大大增强。

就我个人而言,并不一定会一直使用 return 关键字,这往往是凭感觉作出的。但在闭包中,我多数情况下不会使用它。所以如果该关键字是可选择使用的,而如果它给你的感觉是为代码可读性套上了枷锁,那么也你也可以不使用它,但这并非是强制性的。

然而,要提请大家注意的是,在使用 def 关键字(而非某种具体类型)定义的方法时,最后一个表达式有时会被返回。所以建议最好指定某些具体的返回类型,比如 void 或某种其他类型。在上面所展示的例子中,假如我们把 m2 作为最后要返回的语句,那么最后的表达式应该为 m2.c = 3 ,即返回 3 ,而并非是你所期望的映射。

if / elsetry / catch 这些语句也能返回值,就好像在这些语句中也存在“最后一个表达式”一样。

def foo(n) {
  if(n == 1) {
    "Roshan"
  } else {
    "Dawrani"
  }
}

assert foo(1) == "Roshan"
assert foo(2) == "Dawrani"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文