Sto cercando di ottenere un sottoarray in scala e sono un po 'confuso su quale sia il modo corretto di farlo. Quello che mi piacerebbe di più sarebbe qualcosa come come puoi farlo in Python:
x = [3, 2, 1]
x[0:2]
ma sono abbastanza certo che non puoi farlo.
Il modo più ovvio per farlo sarebbe utilizzare la libreria di utilità Java Arrays.
import java.util.Arrays
val start = Array(1, 2, 3)
Arrays.copyOfRange(start, 0, 2)
Ma mi fa sempre sentire un po 'sporco usare le librerie Java in Scala. Il modo più "scalaico" che ho trovato per farlo sarebbe stato
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
}
ma c'è un modo migliore?