我不知道怎么称呼这个,但我想要这样的东西.
val x = List(1,2,3,...)
val y = List(4,5,6,...)
//want a result of List(1+4, 5+6, 7+8,...)
Run Code Online (Sandbox Code Playgroud)
在scala中有一个简单的方法吗?我当前的实现涉及使用从0到x.lenght的循环,这非常难看.如果有可能,我希望解决方案可以使用超过第n个列表,也可能与+旁边的其他类型的运算符一起使用.
谢谢 !
回应"如果我有超过3个列表怎么办?":
def combineAll[T](xss: Seq[T]*)(f: (T, T) => T) =
xss reduceLeft ((_,_).zipped map f)
Run Code Online (Sandbox Code Playgroud)
使用这样:
scala> combineAll(List(1,2,3), List(2,2,2), List(4,5,6), List(10,10,10))(_+_)
res5: Seq[Int] = List(17, 19, 21)
Run Code Online (Sandbox Code Playgroud)
编辑:或者
def combineAll[T](xss: Seq[T]*)(f: (T, T) => T) =
xss.transpose map (_ reduceLeft f)
Run Code Online (Sandbox Code Playgroud)
做同样的事情,可能更有效率.
| 归档时间: |
|
| 查看次数: |
2147 次 |
| 最近记录: |