使用Scala的api documentation很明显如何使用::
语法构造列表,该语法引用列表上的方法。
但是{ case 1 :: 2 :: _ => ??? }
中用于模式匹配的中缀表示法中的提取器将需要具有unapply方法的对象。
所以我的问题是:这个未记录的提取器::
在Scala中来自哪里?
答案 0 :(得分:1)
以下是::
实施的方式
/** A non empty list characterized by a head and a tail.
* @param head the first element of the list
* @param tl the list containing the remaining elements of this list after the first one.
* @tparam B the type of the list elements.
* @author Martin Odersky
* @version 1.0, 15/07/2003
* @since 2.8
*/
@SerialVersionUID(509929039250432923L) // value computed by serialver for 2.11.2, annotation added in 2.11.4
final case class ::[B](override val head: B, private[scala] var tl: List[B]) extends List[B] {
override def tail : List[B] = tl
override def isEmpty: Boolean = false
}
有关详细信息,请访问Scala's '::' operator, how does it work?
答案 1 :(得分:0)
对于列表中的::
,提取器是作为case class ::
的一部分生成的。
在模式匹配中使用::
称为构造函数模式。