为什么我不能合并kotlin中的两个列表

为什么我不能合并kotlin中的两个列表,kotlin,Kotlin,我在读anotonio leava关于kotlin的书 有一个名为“merge”的函数,它可以将两个列表相互合并 这是作者在书中写的一段代码: 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}) 这意味着合并是加上两个列表 但是

我在读anotonio leava关于kotlin的书 有一个名为“merge”的函数,它可以将两个列表相互合并 这是作者在书中写的一段代码:

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不知道函数名 但它不起作用 你能帮助我吗
对不起,因为我的英语

你可以用地图来做

   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] }

你可以用地图来做

   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] }

merge
既不是
List
的成员函数,kotlin标准库也不提供扩展函数。但是你可以自己定义一个(我怀疑,作者就是这么做的)

fun List.merge(另一个List:List,operation:(E,E)->E:List{
//您可能需要检查这两个列表的基数
return index.map{操作(此[it],另一个列表[it])}
}

合并
既不是
列表
的成员函数,kotlin标准库也不提供扩展函数。但是你可以自己定义一个(我怀疑,作者就是这么做的)

fun List.merge(另一个List:List,operation:(E,E)->E:List{
//您可能需要检查这两个列表的基数
return index.map{操作(此[it],另一个列表[it])}
}

您可以使用函数代替映射

fun main(args:Array){
val list1=listOf(4,5,6)
val list2=listOf(1,2,3)
val result=list1.zip(list2){e1,e2->e1+e2}
println(result)//打印[5,7,9]
}

您可以使用函数代替映射

fun main(args:Array){
val list1=listOf(4,5,6)
val list2=listOf(1,2,3)
val result=list1.zip(list2){e1,e2->e1+e2}
println(result)//打印[5,7,9]
}

此外,您还可以使用union组合两个列表,如ListUtils。union(list1,list2)我想加上两个列表中的两个元素,索引相同,然后重新生成另一个列表,如::list1=[1,2,3]list2=[5,6,7]returned list=[6,8,10]以及如何使用“merge”为什么合并不起作用,它会对你有用的谢谢你现在有用了但我还有一个问题是错的?为什么它不起作用?如果它不起作用,为什么安东尼奥·利维亚在他的书中写了它?谢谢你的帮助谢谢!这是我在stackoverflow.com中的第一个问题,你可以使用union来组合两个列表,比如ListUtils。union(list1,list2)我想加上两个列表中的两个元素,索引相同,然后重新生成另一个列表,比如::list1=[1,2,3]list2=[5,6,7]返回的列表=[6,8,10],我如何使用“merge”来解释为什么合并不起作用,请看我编辑的答案,它对你有用谢谢你现在它有用,但我还有一个问题是错的?为什么它不起作用?如果它不起作用,为什么安东尼奥·利维亚在他的书中写了它?谢谢你的帮助谢谢!这是我在stackoverflow.com上的第一个问题
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]) }
}
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]
}