Scala - 创建指定长度的类型参数化数组

non*_*com 33 arrays scala type-parameter

如果在Scala IDE中尝试以下操作:

val chars = Array[Char](256)
Run Code Online (Sandbox Code Playgroud)

一切都很好.但如果我这样做:

val len = 256
val chars = Array[Char](len)
Run Code Online (Sandbox Code Playgroud)

它说它期望一个Char而不是len?为什么?我希望行为是一样的!为什么我认为我想把那个东西放在数组中而不是指定它的大小?据我所知,没有数组的构造函数只需要一个参数就可以将它放在数组中.

Ser*_*nko 65

val chars = Array[Char](256)
Run Code Online (Sandbox Code Playgroud)

这是因为256被视为a Char并且它创建了一个元素数组(代码256)

val len = 256
val chars = Array[Char](len)
Run Code Online (Sandbox Code Playgroud)

这是len Int,所以它失败了

要创建指定大小的数组,您需要这样的东西

val chars = Array.fill(256){0}
Run Code Online (Sandbox Code Playgroud)

where {0}是生成元素的函数

如果Array的内容无关紧要,您也可以使用new而不是fill:

val chars = new Array[Char](256)
Run Code Online (Sandbox Code Playgroud)

  • 如果Array的内容不重要,你也可以使用new而不是fill:`val chars = new Array [Char](256)` (5认同)

mis*_*tor 29

使用Array.ofDim[Char](256).

请在此处查看API文档.