說我有兩個列表任意大小的元組與第一元素類型固定
val L1 = List[(Int, Int)]((1,1), (2,2))
val L2 = List[(Int, Int, Int)]((1,1,1), (2,2,2))
現在我想打一個功能func
,它接受一個int值i
和兩份名單的所有項目,其中第一元素相匹配i
。一種方法是
def func(i:Int) = {
L1.collect.collect{case any if any._1 != i => any}
L2.collect.collect{case any if any._1 != i => any}
}
考慮到這兩條線是如此相似,如果可以縮短代碼會很好。我在某種程度上可以將L1
(和L2
)作爲參數傳遞給func
。該函數不應該事先知道元組將具有多少元素,只是第一個元素是Int
。
這可能嗎?
[編輯:我覺得這個問題還不夠清楚。我的歉意。]
這是我想要做的。我想通過多次呼叫func
多個列表,在兩個以上的列表中執行此操作,例如n。
L1 = L1.collect.collect{case any if any._1 != i => any}
L2 = L2.collect.collect{case any if any._1 != i => any}
...
Ln = Ln.collect.collect{case any if any._1 != i => any}
其中每個L1
,L2
,... Ln
是元組的列表與第一元件Int
[EDIT2]
在上文中,L1
可能是列表的(Int, String)
,L2
可能是(Int, Int, Int)
等。唯一的保證是第一個元素是Int
。
謝謝。我不知道或'productIterator'。似乎解決了我的問題。該列表僅僅是爲了舉例說明如何處理元組(因爲缺少更好的元組)。我真的需要弄清楚如何以通用的方式處理元組。 – Jus12
我不認爲我想要做什麼是可能的,但這似乎是處理元組的通用方法。我想要的是重新分配L1,L2等 – Jus12
@ Jus12你可以將你的列表定義爲'var's而不是'val's,然後使用'L1 = func(i,L1)'等,如果這就是你想 –