Scala:元组中的模式匹配

时间:2014-07-07 08:15:06

标签: scala pattern-matching tuples

我知道元组在Scala中是不可变的这一事实。因此,我使用模式匹配来改变我的元组。我有一个2元组,有两个3元组元素,每个元素都是一个序列。我的问题是:'如果第一个元组的第一个元素是空序列,则发送一些默认值。' 我的代码看起来像这样:

val (fooTuple, barTuple) = 
{
// function that returns a 2-tuple with elements that are 3-tuples
((a, b, c), (d, e, f)) //Each of these is a sequence
} match {
case ((Seq(), x, y), z) => ((Seq("default"), x, y), z)
}

抛出MatchError打印((a, b, c), (d, e, f))的值 我做错了什么?

1 个答案:

答案 0 :(得分:3)

如果您的第一个元素不为空,则会失败,您可以通过处理其他情况来解决此问题:

val (fooTuple, barTuple) = 
{
// function that returns a 2-tuple with elements that are 3-tuples
((a, b, c), (d, e, f)) //Each of these is a sequence
} match {
  case ((Seq(), x, y), z) => ((Seq("default"), x, y), z)
  case other => other
}

所有其他案件将由case other => other

处理