Как правильно получить подмассив в Scala?

Я пытаюсь получить подмассив в scala, и я немного запутался. каков правильный способ сделать это. Больше всего мне бы хотелось, чтобы это было похоже на то, как вы можете сделать это в python:

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

, но я совершенно уверен, что вы не можете этого сделать.

Самый очевидный способ сделать это — использовать библиотеку утилит Java Arrays.

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

Но я всегда чувствую себя немного грязным, когда использую библиотеки Java в Scala. Самый «скалаический» способ, который я нашел, это

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
}

, но есть ли лучший способ?

89
задан nnythm 31 May 2012 в 09:32
поделиться