2015-11-07 353 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不可變,函數刪除不會產生副作用,它只是返回新的列表

相關問題