使用多个返回值Vectorize Scala函数

sup*_*pyo 3 scala

向量化返回多个值的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)

任何想法将不胜感激.谢谢!

om-*_*nom 5

你可以解压缩它(很明显,它是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.