我可以这样创建一个列表:
val value = List(1) ::: 2 :: List(3)
现在,我试图像这样分解该列表:
value match { case a ::: b :: c => (a, b, c) }
但我得到
error: not found: value :::
。为什么我收到此错误。为什么这种模式不起作用,我应该怎么用呢?
最佳答案
假设你有
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) }
关于scala - 错误: not found: value:::,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33581335/