對不起,沒有描述性的標題;我想不出任何更好的東西。編輯它,如果你想到一個。如何在Scala中做這樣的事情?
比方說,我有兩個List
對象,他們總是在變化。他們需要保持單獨的列表,但許多操作都必須在他們兩個上完成。這使我做的東西,如:
//assuming A and B are the lists
A.foo(params)
B.foo(params)
換句話說,我做在我的代碼,很多地方完全一樣的操作,以兩種不同的列表。我想要一種方法將它們減少到一個列表,而不必明確地構造另一個列表。我知道只是將列表A
和b
組合成一個列表C
可以解決我所有的問題,但是如果我需要向列表中添加一個新對象,我們會回到相同的操作(因爲我必須添加它到C
以及其各自的列表)。
它處於緊密的循環中,性能非常重要。有沒有什麼辦法來構建一個迭代器或者什麼東西來迭代A
,然後轉向B
,全部透明?我知道另一個解決方案是構建組合列表(C
),每次我想在這兩個列表上執行某種功能時,但這會浪費大量時間(從計算角度而言)。
微調。獲取迭代器:(l1.elements ++ l2.elements)。儘管如此,Iterator解決方案不能與可變列表一起使用,因爲OP顯然需要。另外,Scala庫中的迭代器似乎只能一次性使用。您不能倒帶並重復使用它。然而,upvoting的原因,迭代器是去這裏的方式,但可能不是scala庫版本。 – HRJ 2009-10-01 09:47:05
這很好,謝謝。我確實使用HRJ的想法(元素)。 – ryeguy 2009-10-01 12:49:23
@HRJ @ryeguy這就是爲什麼在foreach語句後面的註釋;-) List.elements在Scala 2.8.0中已棄用,請改用iterator。 – 2009-10-01 13:40:57