错误:未找到:值:::

时间:2015-11-07 09:47:57

标签: scala compiler-errors pattern-matching

我可以像这样创建一个列表:

val value = List(1) ::: 2 :: List(3)

现在我试图像这样分解该列表:

value match { case a ::: b :: c => (a, b, c) }

但我得到error: not found: value :::

为什么我收到此错误。为什么这种模式不起作用,我应该使用什么呢?

1 个答案:

答案 0 :(得分:3)

假设你有

val xs = List(1, 2, 3, 4)

并假设有一个提取器对象可以提取集合前缀。

应该匹配什么
case a ::: b :: c => (a, b, c)

是(选择所有适用的选项)

  • (List(1, 2, 3), 4, Nil)
  • (List(1, 2), 3, List(4))
  • (List(1), 2 , List(3, 4))
  • (Nil, 1, List(2, 3, 4))

由于匹配模式的方法不止一种,因此上述提取器不存在。相反,您可以使用以下内容。

value match { case a :: b :: c => (List(a), b, c) }