1
成对列表匹配我学习Scala模式匹配和遇到以下问题时:编译器错误使用模式在斯卡拉
假设我有一个整数的列表,并使用模式匹配的最后一个元素匹配:
val list = 1 :: 2 :: 3 :: Nil
list match {
case xs :+ 3 => println("Matched")
case _ => println("Not matched")
}
在这种情况下,它工作没有问题,并打印“匹配”。
但问题是当我用对的列表,而不是:
val list = ('a', 1) :: ('b', 2) :: ('c', 3) :: Nil
list match {
case xs :+ ('c', 3) => println("Matched")
case _ => println("Not mathed")
}
当我写这篇文章,我得到以下错误:
<console>:14: error: too many patterns for object :+ offering
(List[(Char, Int)], (Char, Int)): expected 2, found 3
case xs :+ ('c', 3) => println("Matched")
^
<console>:14: error: type mismatch;
found : Char('c')
required: (Char, Int)
case xs :+ ('c', 3) => println("Matched")
我错过的东西在这里,如果有一些正确的方法来做到这一点?
scala版本是2.11.8。
谢谢