Я пытаюсь получить subarray в 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. Самый "scalaic" способ, которым я нашел это, будет
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
}
но есть ли лучший способ?