目前学习Scala,特别是学习模式匹配,我在Scala中编写了这个简单的因子方法:
def factorial(n : Int) : Int = {
if(n <= 1)
1
else
n * factorial(n -1)
}
然后我想,我可以使用模式匹配并写下这个:
def fact(n : Int) : Int = n match {
case 0 => 1
case n => n * fact(n -1)
}
但是我认为模式匹配的重点是对数据进行排序,为什么我需要在像factorial这样的东西上使用它呢?
非常感谢。答案 0 :(得分:1)
但我认为模式匹配的重点是对数据进行排序
实际上,模式匹配非常适合编写任何类型的算法(就像您的示例中那样)。实际上,Odersky的Functional Programming in Scala在线课程的大部分内容都集中在使用模式匹配编写算法上。
答案 1 :(得分:0)
数据解构和提取与数据类型相结合,在模式匹配中至关重要。
在阶乘的情况下,我们以不同的方式提取和处理大于1的值到值1,也许是模式匹配的微不足道的使用,很可能用和if-else
表达式替换。