val list1 = List(1, 1, 2, 3, 5,7,8,4)
def lastrecursive[A](ls :List[A]):A = ls match{
case p :: Nil => p // what is the meaning of Nil
case _ :: tail => lastrecursive(tail)
case _ => throw new NoSuchElementException
}
以递归格式输出代码ABOVE。任何人都可以解释我们为什么给予 ::和案例h和案例尾部和案例_。在处理列表匹配模式时。
and for reversing a list
def reverseRecursive[A](ls: List[A]): List[A] = ls match {
case Nil => Nil
case h :: tail => reverseRecursive(tail) ::: List(h)
}
这个::: List(h)如何工作?
答案 0 :(得分:2)
:: method用于构造和解构列表。 a :: b表示列表的头部是(单个元素),尾部是b(列表)。
p :: Nil表示存在一些元素p并且尾部是空列表(Nil)的情况。
这种情况基本上可以找到列表中的最后一个实际元素。
第二种情况类似:h :: tail表示元素h和列表尾部。所以我们反转尾部,然后将h列表添加到最后(l1 ::: l2将列表 l1添加到列表 l之前)。