Scala에서 배열 초기화


115

저는 Scala를 처음 사용하여 오늘부터 배우기 시작했습니다. Scala에서 배열을 초기화하는 방법을 알고 싶습니다.

Java 코드 예

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

Scala에서 위의 코드와 동등한 것은 무엇입니까?

답변:


141
scala> val arr = Array("Hello","World")
arr: Array[java.lang.String] = Array(Hello, World)

6
이 답변은 Scala에서 다차원 배열을 초기화하는 방법을 아직 설명하지 않습니다 (여기
Anderson Green

108

0으로 채워진 배열을 초기화하려면 다음을 사용할 수 있습니다.

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

이것은 Java의 new byte[5].


3
FYI, List는 동등한 이니셜 라이저 List.fill(5)(0)로 짝수 함수를받습니다. List.fill(5)(myFunc())
cevaris 17:06에

39

채우기를 사용하여 더 동적 인 초기화를 수행 할 수도 있습니다.

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

==>

Array[Int] = Array(0, 1, 0, 0, 3, 2, 4, 1, 4, 3)

17

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)

15

Array의 길이를 알고 있지만 내용을 모르는 경우 사용할 수 있습니다.

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

2 차원 배열을 원하지만 내용을 모르는 경우 다음을 사용할 수 있습니다.

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

물론 문자열을 다른 유형으로 변경할 수 있습니다.

내용을 이미 알고 있다면 다음을 사용할 수 있습니다.

val temp = Array("a", "b")

10

다차원 배열을 선언하는 또 다른 방법 :

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

res3: Array[Array[String]] = Array(Array("", "", ""), Array("", "", ""),Array("", "", ""), Array("", "", ""))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.