2012-02-23 64 views
28

的類型參數化陣列如果Scala中IDE嘗試以下方法:斯卡拉 - 創建指定長度

val chars = Array[Char](256) 

它是所有細。但是,如果我這樣做:

val len = 256 
val chars = Array[Char](len) 

它說,它需要一個Char,而不是len?爲什麼?我期望的行爲是一樣的!爲什麼它認爲我想把它放在數組中而不是指定它的大小?據我所知,沒有數組的構造函數需要一個參數將其放入數組中。

回答

51
val chars = Array[Char](256) 

此操作,因爲256視爲Char和它創建一個元素陣列(代碼256)

val len = 256 
val chars = Array[Char](len) 

這裏len爲Int,所以它不能

要創建的陣列指定尺寸你需要這樣的東西

val chars = Array.fill(256){0} 

其中{0}是生產要素

如果數組的內容並不重要,你也可以使用new代替fill功能:

val chars = new Array[Char](256) 
+4

如果數組的內容不重要,您也可以使用new來代替fill: 'val chars = new Array [Char](256)' – MxFr 2012-02-23 13:14:11

24

使用Array.ofDim[Char](256)

此外,它有助於查找API docs之前發佈您的問題到stackoverflow。