Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 错误:未找到:值:::_Scala_Compiler Errors_Pattern Matching - Fatal编程技术网

Scala 错误:未找到:值:::

Scala 错误:未找到:值:::,scala,compiler-errors,pattern-matching,Scala,Compiler Errors,Pattern Matching,我可以创建如下列表: val value = List(1) ::: 2 :: List(3) value match { case a ::: b :: c => (a, b, c) } 现在我试着像这样分解这个列表: val value = List(1) ::: 2 :: List(3) value match { case a ::: b :: c => (a, b, c) } 但是我得到错误:未找到:值:: 为什么我会犯这个错误。为什么这个模式不起作用,我应该用什么

我可以创建如下列表:

val value = List(1) ::: 2 :: List(3)
value match { case a ::: b :: c => (a, b, c) }
现在我试着像这样分解这个列表:

val value = List(1) ::: 2 :: List(3)
value match { case a ::: b :: c => (a, b, c) }
但是我得到
错误:未找到:值::

为什么我会犯这个错误。为什么这个模式不起作用,我应该用什么来代替呢?

假设你有

val xs = List(1, 2, 3, 4)
假设有一个提取器对象可以提取集合前缀。应该匹配什么

case a ::: b :: c => (a, b, c)
是(选择所有适用项)

  • (列表(1,2,3,4,Nil)
  • (列表(1,2,3,4))
  • (列表(1,2,3,4))
  • (无,1,列表(2,3,4))
因为匹配模式的方法不止一种,所以上述提取器不可能存在。相反,您可以使用以下命令

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

如果您知道确切的列表大小(3个元素),您也可以通过这种方式进行匹配:
值匹配{案例列表(a,b,c)=>(a,b,c)}