我有一个n为3 ls的List作为List(a,b,c,d,e)我的查询是为我想要的(3,List(a,b,c,d,e))编码将其分为两部分,例如List(a,b,c),List(d,e)。为此,scala程序如下所示。 我不懂val(pre,post)。为什么使用它,以及我们从中得到什么?有人可以详细说明吗?
def splitRecursive[A](n: Int, ls: List[A]): (List[A], List[A]) = (n, ls) match {
case (_, Nil) => (Nil, Nil)
case (0, list) => (Nil, list)
case (n, h :: tail) => {
val (pre, post) = splitRecursive(n - 1, tail)
(h :: pre, post)
}
}
答案 0 :(得分:2)
您的splitRecursive
函数返回一对列表。要从这两个列表中删除两个列表,您可以像这样获取它们:
val result = splitRecursive(n - 1, tail)
val pre = result._1
val post = result._2
或者您可以使用解构来获取它们,而无需首先将对绑定到result
。这就是splitRecursive
中的语法。
val (pre, post) = splitRecursive(n - 1, tail)
这是从一对元素(或其他可以分解的结构)中取出元素的简便方法。