说我有两个列表任意大小的元组与第一元素类型固定
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)'等,如果这就是你想 –