我正在阅读有关kotlin的anotonio leava书 有一个名为“合并”的功能,它可以相互合并两个列表 这是作者在他的书中写的代码:
val list = listOf(1,2,3,4,5,6)
val anotherlist = listOf(7,8,9,10,11,12)
assertEquals(listOf(8,10,12,14,16,18),list.merge(anotherlist){it1,it2 - > it1+it2})
这意味着合并将两个列表加在一起 但是当我自己写代码时 我的想法是intelij不知道func名称 它不起作用 你能帮助我吗 对不起,因为我的英语
答案 0 :(得分:1)
您可以使用地图
val x: List<Int> = listOf(1,2,3,4,5,6)
val y: List<Int> = listOf(2,3,4,5,6,7)
val sums = (x.indices).map { x[it] + y[it] }
输出
[3, 5, 7, 9, 11, 13]
答案 1 :(得分:1)
您可以使用zip函数来代替地图
fun main(args: Array<String>) {
val list1 = listOf(4, 5, 6)
val list2 = listOf(1, 2, 3)
val result = list1.zip(list2) { e1, e2 -> e1 + e2 }
println(result) // prints [5, 7, 9]
}
答案 2 :(得分:0)
merge
既不是List
的成员函数,也不是kotlin标准库提供扩展功能。但是您可以自己定义一个(我怀疑这是作者所做的)
fun <E> List<E>.merge(anotherlist: List<E>, operation: (E, E) -> E): List<E> {
// you probably want to check cardinalities of the two lists
return indices.map { operation(this[it], anotherlist[it]) }
}