122

私はScalaを初めて使用し、今日から学び始めました。Scalaで配列を初期化する方法を知りたいです。

Javaコードの例

String[] arr = { "Hello", "World" };

Scalaの上記のコードに相当するものは何ですか?

4

7 に答える 7

153
scala> val arr = Array("Hello","World")
arr: Array[java.lang.String] = Array(Hello, World)
于 2010-10-07T11:11:13.143 に答える
112

ゼロで満たされた配列を初期化するには、次を使用できます。

> Array.fill[Byte](5)(0)
Array(0, 0, 0, 0, 0)

これはJavaのと同等new byte[5]です。

于 2012-03-15T11:10:08.130 に答える
41

塗りつぶしでより動的な初期化を行うこともできます。

Array.fill(10){scala.util.Random.nextInt(5)} 

==>

Array[Int] = Array(0, 1, 0, 0, 3, 2, 4, 1, 4, 3)
于 2012-08-21T08:42:21.797 に答える
18

Vasilの答えに加えて:Scalaコレクションとして与えられた値がある場合は、次のように書くことができます。

val list = List(1,2,3,4,5)
val arr = Array[Int](list:_*)
println(arr.mkString)

ただし、通常はtoArrayメソッドの方が便利です。

val list = List(1,2,3,4,5)
val arr = list.toArray
println(arr.mkString)
于 2010-10-07T13:54:32.110 に答える
16

配列の長さはわかっているが、その内容がわからない場合は、次を使用できます。

val length = 5
val temp = Array.ofDim[String](length)

2次元配列が必要であるが、その内容がわからない場合は、次を使用できます。

val row = 5
val column = 3
val temp = Array.ofDim[String](row, column)

もちろん、Stringを他のタイプに変更することもできます。

その内容を既にご存知の場合は、

val temp = Array("a", "b")
于 2014-09-19T18:40:54.690 に答える
12

多次元配列を宣言する別の方法:

Array.fill(4,3)("")

res3: Array[Array[String]] = Array(Array("", "", ""), Array("", "", ""),Array("", "", ""), Array("", "", ""))
于 2015-01-16T06:15:42.397 に答える
1

[すべての答えを統合する]

1次元配列の初期化

// With fixed values
val arr = Array("a", "ab", "c")

// With zero value of the type
val size = 13
val arrWithZeroVal = Array.ofDim[Int](size) //values = 0
val arrBoolWithZeroVal = Array.ofDim[Boolean](size) //values = false

// With default value
val defVal = -1
val arrWithDefVals = Array.fill[Int](size)(defVal)

//With random values
val rand = scala.util.Random
def randomNumberGen: Int = rand.nextInt(5)
val arrWithRandomVals = Array.fill[Int](size){randomNumberGen}

2-D / 3-D/nDアレイの初期化

// With zero value of the type
val arr3dWithZeroVal = Array.ofDim[Int](5, 4, 3) 

// With default value
val defVal = -1
val arr3dWithDefVal = Array.fill[Int](5, 4, 3)(defVal)

//With random values
val arr3dWithRandomValv = Array.fill[Int](5, 4, 3){randomNumberGen}

結論:Array.ofDim [TYPE](d1、d2、d3 ...)を使用して、タイプのゼロ値を使用します。それ以外の場合は、Array.fill [TYPE](d1、d2、d3 ...)(functionWhichReturnsTYPE)を使用します

参考のための出力:

scala> val arr = Array("a", "ab", "c")
arr: Array[String] = Array(a, ab, c)

scala> val size = 13
size: Int = 13

scala> val arrWithZeroVal = Array.ofDim[Int](size) //values = 0
arrWithZeroVal: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

scala> val arrBoolWithZeroVal = Array.ofDim[Boolean](size) //values = false
arrBoolWithZeroVal: Array[Boolean] = Array(false, false, false, false, false, false, false, false, false, false, false, false, false)

scala> val defVal = -1
defVal: Int = -1

scala> val arrWithDefVals = Array.fill[Int](size)(defVal)
arrWithDefVals: Array[Int] = Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)

scala> val rand = scala.util.Random
rand: util.Random.type = scala.util.Random$@6e3dd5ce

scala> def randomNumberGen: Int = rand.nextInt(5)
randomNumberGen: Int

scala> val arrWithRandomVals = Array.fill[Int](size){randomNumberGen}
arrWithRandomVals: Array[Int] = Array(2, 2, 3, 1, 1, 3, 3, 3, 2, 3, 2, 2, 0)

scala> val arr3dWithZeroVal = Array.ofDim[Int](5, 4, 3) 
arr3dWithZeroVal: Array[Array[Array[Int]]] = Array(Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0)), Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0)), Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0)), Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0)), Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0)))

scala> val arr3dWithDefVal = Array.fill[Int](5, 4, 3)(defVal)
arr3dWithDefVal: Array[Array[Array[Int]]] = Array(Array(Array(-1, -1, -1), Array(-1, -1, -1), Array(-1, -1, -1), Array(-1, -1, -1)), Array(Array(-1, -1, -1), Array(-1, -1, -1), Array(-1, -1, -1), Array(-1, -1, -1)), Array(Array(-1, -1, -1), Array(-1, -1, -1), Array(-1, -1, -1), Array(-1, -1, -1)), Array(Array(-1, -1, -1), Array(-1, -1, -1), Array(-1, -1, -1), Array(-1, -1, -1)), Array(Array(-1, -1, -1), Array(-1, -1, -1), Array(-1, -1, -1), Array(-1, -1, -1)))

scala> val arr3dWithRandomVals = Array.fill[Int](5, 4, 3){randomNumberGen}
arr3dWithRandomVals: Array[Array[Array[Int]]] = Array(Array(Array(2, 0, 0), Array(4, 1, 0), Array(4, 0, 0), Array(0, 0, 1)), Array(Array(0, 1, 2), Array(2, 0, 2), Array(0, 4, 2), Array(0, 4, 2)), Array(Array(4, 3, 0), Array(2, 2, 4), Array(4, 0, 4), Array(4, 2, 1)), Array(Array(0, 3, 3), Array(0, 0, 4), Array(4, 1, 3), Array(2, 2, 3)), Array(Array(0, 2, 3), Array(1, 4, 1), Array(1, 3, 3), Array(0, 0, 3)))

于 2021-06-20T12:20:11.790 に答える