假设以下四个元组列表:
> 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
答案 0 :(得分:2)
您可以使用:+
匹配器对象:
val rest :+ ((p1, p2)) :+ ((l1, l2)) = getList
它是the part of standard library,因为scala 2.10
对于以前的版本,您可以使用source
自行重新定义