如何对列表中的元素的所有组合执行操作?
我有多个列表,为了简单起见,让我们说2:
val names = listOf("John", "Tom") val days = listOf(1, 2, 3)
我想用函数f: (String, Int): Unit
遍历这些可能值的所有组合f: (String, Int): Unit
:
f("John", 1) f("John", 2) f("John", 3) f("Tom", 1) f("Tom", 2) f("Tom", 3)
我想找出在kotlin中做到这一点的惯用方法。 关闭我的头顶,我想这可以用一个嵌套的地图来完成。 有些东西是:
a.map { itA -> b.map { itB -> f(itA, itB) } }
编辑 :这似乎并没有为我工作,虽然它返回:
[() -> kotlin.collections.List<kotlin.Unit>, () -> kotlin.collections.List<kotlin.Unit>]
forEach
是最接近的,因为它可以得到:
names.forEach { i -> days.forEach { j -> f(i, j)} }
例:
private fun f(i: String, j: Int) = println("$i,$j")
结果:
John,1 John,2 John,3 Tom,1 Tom,2 Tom,3
常规for
循环出了什么问题?
for (name in names) for (day in days) f(name, day)