scala中匹配模式中case的含义是什么?

时间:2017-04-07 10:46:04

标签: scala

  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)如何工作?

1 个答案:

答案 0 :(得分:2)

:: method用于构造和解构列表。 a :: b表示列表的头部是(单个元素),尾部是b(列表)。

p :: Nil表示存在一些元素p并且尾部是空列表(Nil)的情况。

这种情况基本上可以找到列表中的最后一个实际元素。

第二种情况类似:h :: tail表示元素h和列表尾部。所以我们反转尾部,然后将h列表添加到最后(l1 ::: l2将列表 l1添加到列表 l之前)。