2012-02-23 52 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。