gpt4 book ai didi

Scala 案例类和尾递归最佳实践

转载 作者:行者123 更新时间:2023-12-01 08:54:46 24 4
gpt4 key购买 nike

我对 java 的 scala 还很陌生,对模式匹配也很陌生。我试图弄清楚的一件事是何时使用它以及它的成本/ yield 是什么。比如这个

def myThing(a: Int): Int = a match {
case a: Int if a > 0 => a
case _ => myThing(a + 1)
}

和这个做同样的事情(除非我真的误解了什么)

def myThing(a: Int): Int = {
if (a > 0) a
else myThing(a + 1)
}

所以我的实际问题是:但是它们的运行方式相同吗?我的模式匹配示例尾递归吗?如果不是,那为什么不在第二个例子中呢?

还有什么我需要担心的,比如资源?还是我应该总是尝试使用模式匹配?

我搜索了这些答案,但没有找到任何“最佳实践”!

编辑:我知道使用的示例有点做作 - 我刚刚添加它是为了清楚下面的问题 - 谢谢!

最佳答案

是的,它们的运行方式相同。每个语法糖的最佳实践都是相同的:只要它提供更易读或更灵活的代码,就使用它。在您的示例中,如果是 if 语句,您可以省略大括号并只写

def myThing(a: Int): Int =  if (a > 0) a else myThing(a + 1)

这绝对比模式匹配更方便。模式匹配在以下情况下很方便:

还有 to ensure you function is tail-recursive你可以使用 @tailrec 注释

关于Scala 案例类和尾递归最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29721476/

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