스칼라 배열
스칼라 언어에서 제공되는 배열은 동일한 유형의 고정 크기 요소를 저장하는 데 사용됩니다. 배열은 모든 편집 언어에서 중요한 데이터 구조 중 하나입니다.
배열 변수를 선언한다는 것은 number0, number1,..., number99를 별도의 변수로 선언하는 것이 아니라, 숫자와 같은 변수를 선언한 후 숫자[0], 숫자[1], ..., 숫자[99]는 개별 변수를 나타냅니다. 배열의 특정 요소는 인덱스로 액세스됩니다.
배열의 첫 번째 요소의 인덱스는 0이고, 마지막 요소의 인덱스는 전체 요소 수에서 1을 뺀 값입니다.
배열 선언
스칼라 배열 선언의 구문 형식은 다음과 같습니다.
var z:Array[String] = new Array[String](3) 或 var z = new Array[String](3)
위 구문에서 z는 문자열 형식의 배열을 선언하고, 배열 길이는 3 이며 3개의 요소를 저장할 수 있습니다. 각 요소에 대한 값을 설정하고 다음과 같이 인덱스로 각 요소에 액세스할 수 있습니다.
z(0) = "php"; z(1) = "Baidu"; z(4/2) = "Google"
마지막 요소의 인덱스는 4/2 표현식을 인덱스로 사용합니다. <🎜와 유사합니다. >z(2) = "구글".
다음 방법으로 배열을 정의할 수도 있습니다.var z = Array("php", "Baidu", "Google")다음 그림은 길이가 10이고 인덱스 값이 0부터 9까지인 myList 배열을 보여줍니다.
배열 처리배열의 요소 유형과 배열의 크기가 결정되므로 배열 요소를 처리할 때 일반적으로 기본 형식을 사용합니다. 고리. 다음 예에서는 배열의 생성, 초기화 및 기타 처리를 보여줍니다.
object Test { def main(args: Array[String]) { var myList = Array(1.9, 2.9, 3.4, 3.5) // 输出所有数组元素 for ( x <- myList ) { println( x ) } // 计算数组所有元素的总会 var total = 0.0; for ( i <- 0 to (myList.length - 1)) { total += myList(i); } println("总和为 " + total); // 查找数组中的最大元素 var max = myList(0); for ( i <- 1 to (myList.length - 1) ) { if (myList(i) > max) max = myList(i); } println("最大值为 " + max); } }위 코드를 실행하면 출력 결과는 다음과 같습니다.
$ scalac Test.scala $ scala Test 1.9 2.9 3.4 3.5 总和为 11.7 最大值为 3.5
다차원 배열다차원 배열 한 배열의 값이 다른 배열이 될 수도 있고, 다른 배열의 값이 배열이 될 수도 있습니다. 행렬과 테이블은 일반적인 2차원 배열입니다. 위는 2차원 배열을 정의하는 예입니다.
var myMatrix = ofDim[Int](3,3)이 예에서 배열에는 세 개의 배열 요소가 포함되고 각 배열 요소에는 세 개의 값이 포함됩니다. 다음으로 2차원 배열 처리의 전체 예를 살펴보겠습니다.
import Array._ object Test { def main(args: Array[String]) { var myMatrix = ofDim[Int](3,3) // 创建矩阵 for (i <- 0 to 2) { for ( j <- 0 to 2) { myMatrix(i)(j) = j; } } // 打印二维阵列 for (i <- 0 to 2) { for ( j <- 0 to 2) { print(" " + myMatrix(i)(j)); } println(); } } }위 코드를 실행하면 출력 결과가 나타납니다. is:
$ scalac Test.scala $ scala Test 0 1 2 0 1 2 0 1 2
배열 병합다음 예에서는 concat() 메서드를 사용하여 두 배열을 병합합니다. concat() 메서드는 여러 배열 매개 변수를 허용합니다.
import Array._ object Test { def main(args: Array[String]) { var myList1 = Array(1.9, 2.9, 3.4, 3.5) var myList2 = Array(8.9, 7.9, 0.4, 1.5) var myList3 = concat( myList1, myList2) // 输出所有数组元素 for ( x <- myList3 ) { println( x ) } } }위 코드를 실행하면 출력 결과는 다음과 같습니다.
$ scalac Test.scala $ scala Test 1.9 2.9 3.4 3.5 8.9 7.9 0.4 1.5
범위 배열 만들기다음 예에서는 range() 메서드를 사용하여 배열을 생성합니다. 범위 내. range() 메서드의 마지막 매개변수는 단계 크기이며 기본값은 1입니다.
import Array._ object Test { def main(args: Array[String]) { var myList1 = range(10, 20, 2) var myList2 = range(10,20) // 输出所有数组元素 for ( x <- myList1 ) { print( " " + x ) } println() for ( x <- myList2 ) { print( " " + x ) } } }는 위 코드를 실행하고 출력 결과는 다음과 같습니다.
$ scalac Test.scala $ scala Test 10 12 14 16 18 10 11 12 13 14 15 16 17 18 19
Scala 배열 메서드 이 표는 Scala 언어에서 배열을 처리하는 중요한 방법을 보여줍니다. 이를 사용하기 전에
import Array._ 가져오기 패키지를 사용해야 합니다.
序号 | 方法和描述 |
---|---|
1 | def apply( x: T, xs: T* ): Array[T] 创建指定对象 T 的数组, T 的值可以是 Unit, Double, Float, Long, Int, Char, Short, Byte, Boolean。 |
2 | def concat[T]( xss: Array[T]* ): Array[T] 合并数组 |
3 | def copy( src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit 复制一个数组到另一个数组上。相等于 Java's System.arraycopy(src, srcPos, dest, destPos, length)。 |
4 | def empty[T]: Array[T] 返回长度为 0 的数组 |
5 | def iterate[T]( start: T, len: Int )( f: (T) => T ): Array[T] 返回指定长度数组,每个数组元素为指定函数的返回值。 以上实例数组初始值为 0,长度为 3,计算函数为a=>a+1: scala> Array.iterate(0,3)(a=>a+1) res1: Array[Int] = Array(0, 1, 2) |
6 | def fill[T]( n: Int )(elem: => T): Array[T] 返回数组,长度为第一个参数指定,同时每个元素使用第二个参数进行填充。 |
7 | def fill[T]( n1: Int, n2: Int )( elem: => T ): Array[Array[T]] 返回二数组,长度为第一个参数指定,同时每个元素使用第二个参数进行填充。 |
8 | def ofDim[T]( n1: Int ): Array[T] 创建指定长度的数组 |
9 | def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]] 创建二维数组 |
10 | def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]] 创建三维数组 |
11 | def range( start: Int, end: Int, step: Int ): Array[Int] 创建指定区间内的数组,step 为每个元素间的步长 |
12 | def range( start: Int, end: Int ): Array[Int] 创建指定区间内的数组 |
13 | def tabulate[T]( n: Int )(f: (Int)=> T): Array[T] 返回指定长度数组,每个数组元素为指定函数的返回值,默认从 0 开始。 以上实例返回 3 个元素: scala> Array.tabulate(3)(a => a + 5) res0: Array[Int] = Array(5, 6, 7) |
14 | def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[Array[T]] 返回指定长度的二维数组,每个数组元素为指定函数的返回值,默认从 0 开始。 |