我知道元组在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))
的值
我做错了什么?
答案 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