2010-02-09 34 views
10

Trong Java byte[] st = new byte[4096], ngụ ý rằng kích thước của mảng st sẽ không vượt quá 4096 byte.Tôi có thể giới hạn kích thước của một mảng trong Scala không?

Tương đương Scala là st:Array[byte] = Array() nơi kích thước không xác định. Nếu tôi đang đọc một tập tin lớn vào mảng này, thì làm thế nào tôi có thể giới hạn kích thước của mảng?

Sẽ có bất kỳ tác dụng phụ nào nếu tôi không quan tâm đến kích thước cho hoạt động trên không?

Trả lời

27
var buffer = new Array[Byte](4 * 1024) 

Làm việc tốt và hoạt động như mong đợi.

9

Ví dụ Java của bạn không tạo ra một mảng có giới hạn trên trên kích thước của nó, nó tạo ra một mảng với kích thước chính xác được nêu, được cố định trong suốt vòng đời của nó. Scala mảng là giống hệt nhau trong lĩnh vực này. Ngoài ra, điều này:

val st: Array[Byte] = Array() 

phân bổ một mảng Byte ("byte" trong Java) có độ dài 0.

Theo như đọc một tập tin vào một mảng, nếu bạn phải xử lý toàn bộ tập tin, sau đó cố gắng phân bổ không gian cần thiết và nếu không, bạn không thể tiếp tục.

Các vấn đề liên quan