スカラ配列
Scala 言語で提供される配列は、同じ型の固定サイズの要素を格納するために使用されます。配列は、あらゆる編集言語にとって重要なデータ構造の 1 つです。
配列変数の宣言は、number0、number1、...、number99 を個別の変数として宣言することを意味するものではなく、数値のような変数を宣言し、数値[0]、数値[1]、...、数値を使用します。 [99] 個々の変数を表します。配列内の特定の要素にはインデックスによってアクセスします。
配列の最初の要素のインデックスは 0 で、最後の要素のインデックスは要素の総数から 1 を引いたものになります。
配列を宣言する
以下はScalaの配列宣言の構文形式です:
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"
最後の要素のインデックスは、z(2) = "Google" と同様に、式 4/2 をインデックスとして使用します。 。
次の方法で配列を定義することもできます:
var z = Array("php", "Baidu", "Google")
次の図は、長さ 10 とインデックス値 0 から 9 の配列 myList を示しています:
配列の処理
配列の要素の型と合計 配列のサイズが決まるため、配列要素を処理するときは通常、基本的な for ループを使用します。
次の例は、配列の作成、初期化、その他の処理を示しています:
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
多次元配列
多次元配列 1 つの配列の値は別の配列になる可能性があります。別の配列 の値は配列にすることもできます。行列とテーブルは一般的な 2 次元配列です。
上記は 2 次元配列を定義する例です:
var myMatrix = ofDim[Int](3,3)
この例では、配列には 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(); } } }
上記のコードを実行すると、出力結果は次のようになります:
$ scalac Test.scala $ scala Test 0 1 2 0 1 2 0 1 2
配列を結合する
次の例では、 concat() メソッドを使用して 2 つの配列をマージします。 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( s rc:AnyRe f , srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit ある配列を別の配列にコピーします。 Java の System.arraycopy(src, srcPos, dest, destPos, length) に相当します。 |
指定された長さの配列を返し、配列の各要素は指定された関数の戻り値です。 上記の配列例の初期値は 0、長さは 3、計算関数は a=>a+1 :scala> Array.iterate(0,3)(a=>a+1) res1: Array[Int] = Array(0, 1, 2) | |
def fill[T]( n: Int )(elem : => T): Array[T] は配列を返します。長さは最初のパラメーターで指定され、各要素には 2 番目のパラメーターが入ります。7 | |
次の 2 つの配列の配列を返します。 length 1 つのパラメータが指定され、各要素は 2 番目のパラメータを使用して入力されます。 F8 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] | |
12 def range( start: Int, end: Int ): Array[Int] | |
13 def tabulate[T]( n: Int )(f: (Int)=> T): Array[T] | |
上記の例は 3 つの要素を返します: | 14 | def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[ Array[T]]
指定された長さの 2 次元配列を返します。デフォルトでは 0 から始まります。 |