Scala列表模式匹配值声明

时间:2015-05-15 11:35:30

标签: list scala pattern-matching tuples

假设以下四个元组列表:

> def getList = List( (1,2), (3,4), (5,6), (7,8) )

我想在新值声明中将其解析为三个部分 - 最后一个元组 (l1,l2)倒数第二个元组 (p1,p2) 列表的其余部分 rest

此外,我也希望模式匹配元组。例如:

> val (rest :: (p1, p2) :: (l1, l2) ) = getList
rest = List( (1,2), (3,4) )
p1 = 5
p2 = 6
l1 = 7
l2 = 8

预期输出不起作用,因为::期望列表作为其右侧参数。我尝试了几种不同的可能性,例如:::List包装器。但是,我还没有达到目标。

甚至可能吗?我不想反转列表 - 相反,我正在寻找适用于价值声明的优雅解决方案(因此请不要match)。我希望在一线解决方案。

编辑:Scala代码运行版本2.9.2

1 个答案:

答案 0 :(得分:2)

您可以使用:+匹配器对象:

val rest :+ ((p1, p2)) :+ ((l1, l2))  = getList

它是the part of standard library,因为scala 2.10

对于以前的版本,您可以使用source

自行重新定义