Mảng khởi tạo trong Scala


115

Tôi mới biết về Scala, mới bắt đầu học nó ngày hôm nay. Tôi muốn biết cách khởi tạo một mảng trong Scala.

Mã Java ví dụ

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

Tương đương với mã trên trong Scala là gì?

Câu trả lời:



108

Để khởi tạo một mảng chứa đầy số không, bạn có thể sử dụng:

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

Điều này tương đương với Java new byte[5].


3
Chỉ cần FYI, Liệt kê như một công cụ khởi tạo tương đương List.fill(5)(0), chấp nhận các hàm chẵn. List.fill(5)(myFunc())
cevaris

39

Cũng có thể thực hiện các thao tác năng động hơn với điền, ví dụ:

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

==>

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

17

Bổ sung cho câu trả lời của Vasil: Nếu bạn có các giá trị được cung cấp dưới dạng bộ sưu tập Scala, bạn có thể viết

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

Nhưng thông thường phương thức toArray tiện dụng hơn:

val list = List(1,2,3,4,5)
val arr = list.toArray
println(arr.mkString)

15

Nếu bạn biết độ dài của Array nhưng bạn không biết nội dung của Array, bạn có thể sử dụng

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

Nếu bạn muốn có mảng hai chiều nhưng bạn không biết nội dung của nó, bạn có thể sử dụng

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

Tất nhiên, bạn có thể thay đổi String thành loại khác.

Nếu bạn đã biết nội dung của nó, bạn có thể sử dụng

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

10

Một cách khác để khai báo mảng nhiều chiều:

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

res3: Array[Array[String]] = Array(Array("", "", ""), Array("", "", ""),Array("", "", ""), Array("", "", ""))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.