在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中。