Scala列表案例模式匹配实现问题:

时间:2019-05-15 19:02:31

标签: scala scala-collections

我正在尝试了解List模式匹配的scala实现和 有疑问如何在List.scala的幕后实现第一个case语句(::将列表按1st,2nd和rest进行拆分)

  list match{
    case h1 :: h2 :: rest => println(h2)
    case _ => 
  }

我试图通过将其与Option Monad进行比较来理解,以下是我对Option case模式匹配如何工作的理解:

当我在Option.scala中调用下面的Option时包装了一个对象时,它为我提供了Some或None

def apply[A](x: A): Option[A] = if (x == null) None else Some(x)

然后,当我在Option上进行模式匹配时,以下条件之一将被匹配,并且我可以调用相同的方法

final case class Some[+A](x: A) extends Option[A] {
  def isEmpty = false
  def get = x
}
case object None extends Option[Nothing] {
  def isEmpty = true
  def get = throw new NoSuchElementException("None.get")
}

当我在List.scala中寻找类似的实现时,我可以找到Nil({case object Nil extends List[Nothing])的案例实现,它将为case Nil模式匹配进行调用 但我试图了解语句case h1 :: h2 :: rest与List.scala案例实现的匹配方式

感谢您的浏览,如果我的问题缺少所需的信息,请添加评论。

0 个答案:

没有答案