【发布时间】:2015-06-25 14:52:15
【问题描述】:
我对 java 的 scala 还很陌生,对模式匹配也很陌生。我试图弄清楚的一件事是何时使用它以及它的成本/收益是什么。比如这个
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)
}
所以我的实际问题是: 但是它们的运行方式相同吗?我的模式匹配示例尾递归吗?如果不是,那为什么不在第二个例子中呢?
还有什么我需要担心的,比如资源?还是我应该总是尝试使用模式匹配?
我搜索了这些答案,但没有找到任何“最佳实践”!
编辑:我知道使用的示例有点做作 - 我刚刚添加它是为了清楚下面的问题 - 谢谢!
【问题讨论】:
标签: scala recursion pattern-matching tail-recursion case-class