Tôi đang cố gắng lấy một mảng con trong scala, và tôi hơi bối rối về cách thực hiện thích hợp. Điều tôi muốn nhất sẽ là một cái gì đó như cách bạn có thể làm điều đó trong python:
x = [3, 2, 1]
x[0:2]
nhưng tôi khá chắc chắn rằng bạn không thể làm điều này.
Cách rõ ràng nhất để làm điều đó là sử dụng thư viện Java Arrays.
import java.util.Arrays
val start = Array(1, 2, 3)
Arrays.copyOfRange(start, 0, 2)
Nhưng nó luôn khiến tôi cảm thấy hơi bẩn khi sử dụng các thư viện Java trong Scala. Cách "quy mô nhỏ" nhất mà tôi thấy để làm điều đó sẽ là
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
}
nhưng có cách nào tốt hơn không?