我是Scala的新手和一般的函数式编程.所以这是我的怀疑.
在具有模式匹配的函数中,当case Nil
匹配时,我们想要返回Nil
,我们应该返回Nil
还是数据类型本身?例如,
def drop[A](l: List[A], n: Int): List[A] = {
if (n <= 0) l
else l match {
case Nil => Nil
case Cons(_, t) => drop(t, n - 1)
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个n
从单链表中删除第一个头元素的功能.在这里,对于第一种情况,我应该返回Nil
(可能作为一种好的做法)还是应该返回l
(因为那样我们就不必构造Nil
对象了)?