Functional programming Kotlin中的元素算术运算

Functional programming Kotlin中的元素算术运算,functional-programming,kotlin,Functional Programming,Kotlin,对kotlin中的双精度数组/列表进行元素操作的最佳方法是什么? 我想做一些简洁的事情,比如 zip(vec1, weights1).map(*) + zip(vec2, weights2).map(*) 加号运算应该在元素上添加结果产物(+作为算术加法,而不是列表的串联)Kotlin的方法是使用常规的集合/序列运算符,其中有很多运算符 在这种情况下,如果您想对两个列表中的每个对应(索引)元素对执行某些操作,那么您需要使用运算符,它生成s的列表。通过Kotlin解构,您可以非常轻松地对pair

对kotlin中的双精度数组/列表进行元素操作的最佳方法是什么? 我想做一些简洁的事情,比如

zip(vec1, weights1).map(*) + zip(vec2, weights2).map(*)

加号运算应该在元素上添加结果产物(+作为算术加法,而不是列表的串联)

Kotlin的方法是使用常规的
集合
/
序列
运算符,其中有很多运算符

在这种情况下,如果您想对两个列表中的每个对应(索引)元素对执行某些操作,那么您需要使用运算符,它生成s的列表。通过Kotlin解构,您可以非常轻松地对pair进行操作

如果我正确理解了您想要实现的目标,那么您的示例将表示为(我使用变量只是为了可读性):


谢谢,是的,这就是我想要实现的。但是,有没有更简单/更简短的方式来表达这一点?对于纯科特林,我相信没有更好的方式。或者,您可以编写自己的DSL(请参阅:)或列出实现并覆盖
+
运算符,请参阅
val result1 = vec1.zip(weights1) { a, b -> a * b }
val result2 = vec2.zip(weights2) { a, b -> a * b }
result1.zip(result2).map { (a, b) -> a + b }