我正在尝试定义一个函数,该函数将获取一个列表并将其拆分n
而不使用take
,drop
或grouped
def mySplit[X](n: Int, xs: List[X]): (List[X], List[X]) = {
if (n <= 0) (Nil, xs)
else
if (n >= xs.size) (xs, Nil)
else
if (n < xs.tail.size) (xs.head :: mySplit(n, xs.tail), Nil)
else (Nil, xs.head :: mySplit(n, xs.tail))
}
这就是我的想法。如果n < xs.tail.size
我们可以建立元组 1(代表第 1 部分),否则我们可以处理元组 2(列表的第二部分)。
以上不起作用。似乎它不喜欢::
我在构建元组的一部分时。
我以正确的方式接近这个吗?
示例:mySplit(3, (1 to 5).toList)
应该返回(List(1,2,3), List(4,5))