加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

我应该在多行Scala方法中使用返回吗?

发布时间:2020-12-16 18:27:16 所属栏目:安全 来源:网络整理
导读:也许这只是我在更多命令式编程中的背景,但我喜欢在我的代码中使用return语句. 我理解在Scala中,许多方法都不需要返回,因为默认情况下返回的是上次计算的值.据我所知,这对于“单线”非常有意义,例如: def square(x) = x * x 我也理解使用显式返回的最终情况(
也许这只是我在更多命令式编程中的背景,但我喜欢在我的代码中使用return语句.

我理解在Scala中,许多方法都不需要返回,因为默认情况下返回的是上次计算的值.据我所知,这对于“单线”非常有意义,例如:

def square(x) = x * x

我也理解使用显式返回的最终情况(当你的代码有多个分支时,你想要为不同的分支打破方法,例如,如果发生错误).但是多线功能呢?如果有明确的回报,例如它是否更具可读性并且更有意义,例如

def average(x: List[Int]) : Float = {
  var sum = 0
  x.foreach(sum += _)
  return sum / x.length.toFloat
}

解决方法

def average(x: List[Int]) : Float = 
  x.foldLeft(0)(_ + _) / x.length.toFloat

更新:虽然我的目的是展示如何将迭代代码转换为函数式表达式,但@soc正确地评论说更短的版本是x.sum / x.length.toFloat

我经常发现在Scala中我不太需要“在中间返回”.此外,一个大的函数被分解成更小的表达式,这些表达式更清楚.而不是

var x = ...
if (some condition) x = ...
else x = ...

我会写的
??如果(某些条件)……
??别的….

使用匹配表达式会发生类似的事而且你总是可以拥有辅助嵌套类.

一旦你对许多形式的表达式感到满意,这些表达式在没有return语句的情况下评估结果(例如,’if’),那么在你的方法中使用一个表达式看起来不合适.

在一个工作地点,我们有一个规则,即在方法中间没有“返回”,因为您的代码的读者很容易错过它.如果’return’只在最后一行,有什么意义呢?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读