2015-11-07 76 views
0

我想要使用递归函数来遍历List [Char]中的每个元素,以检查元素的出现次数。我知道有更简单的方法,甚至可能有这样做的功能,但是有没有办法删除列表的第一个位置?在Scala中删除列表的第一个元素

我使用降尝试,甚至使用了以下剪断,但没有采取任何行动,其中测试列表的名称:我试图避免使用ListBuffer,并试图转换为数组

def delete(i: Int) = test.take(i) ++ test.drop((i+1)); 

但再次没有成功。

+0

考虑它以不同的方式。你需要除“头”之外的所有列表。为此目的,存在函数“tail”。 – Rumoku

+1

不应该使用'tail',因为它是一个部分函数,​​即它会为空列表抛出异常。 '许多函数......像head,tail,init和其他许多函数不必要地失败。'-http://stackoverflow.com/a/23184020/409976 –

+1

'只要删除列表的第一个位置的任何方法?'。 'List#drop(1)'回答这个问题。为什么它不适合你? –

回答

1

你的功能几乎是细删除项目在第i个位置,我只想作为参数添加“测试”名单吧:

scala> def delete[A](test:List[A])(i: Int) = test.take(i) ++ test.drop((i+1)) 
delete: [A](test: List[A])(i: Int)List[A] 

scala> delete((1 to 10).toList)(3) 
res0: List[Int] = List(1, 2, 3, 5, 6, 7, 8, 9, 10) 

我想你努力让自己在“测试”使用一些效果函数删除但List不可变,函数删除不会产生副作用,它只是返回新的列表

相关问题