【发布时间】:2016-05-11 12:21:20
【问题描述】:
我在 scala 中编写了一个代码,但我想从中删除 ++。代码运行良好,但我尽量不使用 ++ 或任何内置函数或运算符(甚至不是 :::)。
创建一个 val 是否更好,或者有更好的方法。
这是该代码的示例。
def partitionAux[A](f: A => Boolean, lst: List[A],
rslt: (List[A], List[A]) ):(List[A], List[A]) = {
lst match {
case Nil => return result
case head :: rest => {
if (f(head))
return partitionHelper(f, rest, (result._1 ++ List[A](head), rslt._2))
else ...
【问题讨论】:
-
1.什么(
partitionAux应该做什么;提供样本输入和输出)? 2. 为什么(不想用++)? -
这是我正在做的练习的一部分。 partitionAux 是一个辅助方法,它应该通过检查其他函数是真还是假来将一个列表分成 2 个。
-
如果要在奇数和偶数之间拆分列表,示例将是:List(0,1,3,4,6)) == (List(0,4,6), List( 1,3))
-
所以您想使用
::而不是++(或:::)?只需在递归函数中添加结果,然后在最后反转两个列表。 (即使你可以使用++,你也应该这样做,因为附加到列表是O(n),前置是O(1))。