【发布时间】:2013-07-23 17:00:26
【问题描述】:
我是 scala 的新手,在研究模式匹配部分时,我很困惑。
val hd::tail = List(1,2,3,4,5)
执行此代码后,hd 将为 Int = 1,tail 将为 List[Int] = List(2, 3, 4, 5)。 这段代码等于:
val ::(hd,tail) = List(1,2,3,4,5)
我了解到这段代码是模式匹配,它实际上调用了 unapply 方法。 但是当我这样写代码时,编译错误:
val result = ::.unapply(List(1,2,3,4,5))
它说方法参数类型不匹配。 "::" 的 unapply 方法需要一个 "::[?]"
有人知道原因吗?
【问题讨论】:
-
这可能是因为
(hd,tail)不是一个有效的标识符。
标签: scala