Scala数组切片与元组

时间:2016-06-29 11:54:25

标签: arrays scala tuples

我尝试使用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())

2 个答案:

答案 0 :(得分:5)

我认为问题是从ArrayArrayOps的隐式转换(从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 发布了预期答案。