我一直在尝试学习Scala中的模式匹配和配对,并使用它来实现合并排序但模式匹配。但是提取头尾对的模式匹配不起作用。我在下面的代码中遗漏了什么?
def merge(xs: List[Int], ys: List[Int]): List[Int] =
(xs, ys) match {
case (x: Int, y: Int) :: (xs1: List[Int], ys1: List[Int]) =>
if (x < y) x :: merge(xs1, ys)
else y :: merge(xs, ys1)
case (x: List[Int], Nil) => x
case (Nil, y: List[Int]) => y
}
答案 0 :(得分:2)
您的第一个案例陈述中有语法错误,请将其更改为
.CodeMirror pre {
font-family: "Ubuntu Mono", monospace;
font-size: 14pt;
...
}
这
case (x :: xs1 , y :: ys1)
您正在尝试匹配包含列表的元组,而不是元组列表