向量化返回多个值的scala函数的最优雅方法是什么?
例如,假设我有这个功能:
def Foobar(foo: Int, bar: Int): (Int, Int) = (foo, bar)
Run Code Online (Sandbox Code Playgroud)
如果它返回一个值,我会做这样的事情:
val a = Array(1, 2, 3)
val b = Array(4, 5, 6)
val c = (a,b).zipped.map(foobar)
Run Code Online (Sandbox Code Playgroud)
但由于它返回一个元组,我最终得到了一个Array[(Int,Int)],而我更喜欢一个(Array[Int], Array[Int]).做这样的事情的正确方法是什么?是否有任何聪明的模式可以将此概括为:
val c = vectorized(foobar,a,b)
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激.谢谢!
你可以解压缩它(很明显,它是oposite zip的操作):
val c = foobar(a,b).unzip
//res2: (s.c.m.IndexedSeq[Int], s.c.m.IndexedSeq[Int]) = (ArrayBuffer(1, 2, 3),ArrayBuffer(4, 5, 6))
Run Code Online (Sandbox Code Playgroud)
但你最终会得到IndexedSeqs,而不是Arrays.
| 归档时间: |
|
| 查看次数: |
1414 次 |
| 最近记录: |