我应该在多行Scala方法中使用返回吗?
也许这只是我在更多命令式编程中的背景,但我喜欢在我的代码中使用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’只在最后一行,有什么意义呢? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |