gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:10:54 27 4
gpt4 key购买 nike

也许这只是我在更多命令式编程方面的背景,但我喜欢在我的代码中使用 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 = ...

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

使用匹配表达式会发生类似的事情。并且您始终可以拥有助手嵌套类。

一旦您熟悉了多种形式的计算结果(例如,'if')而没有 return 语句的表达式,那么在您的方法中使用一个就显得格格不入了。

在一个工作场所,我们有一条规则,即在方法中间不能有“返回”,因为您的代码的读者很容易错过它。如果 'return' 只出现在最后一行,那么拥有它有什么意义呢?

关于scala - 我应该在多行 Scala 方法中使用返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4487099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com