我尝试使用Array[Double]
方法对1D slice
进行切片。我编写了一个方法,它将开始和结束索引作为元组(Int,Int)
返回。
def getSliceRange(): (Int,Int) = {
val start = ...
val end = ...
return (start,end)
}
如何直接使用getSliceRange
的返回值?
我试过了:
myArray.slice.tupled(getSliceRange())
但是这给了我一个编译错误:
Error:(162, 13) missing arguments for method slice in trait IndexedSeqOptimized;
follow this method with `_' if you want to treat it as a partially applied function
myArray.slice.tupled(getSliceRange())
答案 0 :(得分:5)
我认为问题是从Array
到ArrayOps
的隐式转换(从slice
得到GenTraversableLike
)。
val doubleArray = Array(1d, 2, 3, 4)
(doubleArray.slice(_, _)).tupled
Function.tupled[Int, Int, Array[Double]](doubleArray.slice)
(doubleArray.slice: (Int, Int) => Array[Double]).tupled
答案 1 :(得分:1)
这里有两个选项,第一个是两次调用你的函数:
myArray.slice(getSliceRange()._1, getSliceRange()._2)
或预先保存Tuple
:
val myTuple: (Int, Int) = getSliceRange()
myArray.slice(myTuple._1, myTuple._2)
编辑:我留下这个以防万一,但 Peter Neyens 发布了预期答案。