在Scala中获得一个子数组的正确方法是什么?

我正在试图在scala中获得一个子数组,我对这样做的正确方法有点困惑。 我最想要的东西就像是如何在Python中做到这一点:

x = [3, 2, 1] x[0:2] 

但我相当肯定你不能这样做。

最明显的方法是使用Java Arrays util库。

 import java.util.Arrays val start = Array(1, 2, 3) Arrays.copyOfRange(start, 0, 2) 

但是在Scala中使用Java库总是让我觉得有点肮脏。 我发现最“斯卡拉”的方式是

 def main(args: List[String]) { val start = Array(1, 2, 3) arrayCopy(start, 0, 2) } def arrayCopy[A](arr: Array[A], start: Int, end: Int)(implicit manifest: Manifest[A]): Array[A] = { val ret = new Array(end - start) Array.copy(arr, start, ret, 0, end - start) ret } 

但有没有更好的办法?

你可以调用slice方法:

 scala> Array("foo", "hoo", "goo", "ioo", "joo").slice(1, 4) res6: Array[java.lang.String] = Array(hoo, goo, ioo) 

它工作就像在Python中。