模式匹配scala对列表

时间:2016-06-18 09:49:14

标签: scala pattern-matching tuples

我一直在尝试学习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
  }

1 个答案:

答案 0 :(得分:2)

您的第一个案例陈述中有语法错误,请将其更改为

.CodeMirror pre {
    font-family: "Ubuntu Mono", monospace;
    font-size: 14pt;
    ...
}

case (x :: xs1 , y :: ys1) 

您正在尝试匹配包含列表的元组,而不是元组列表