当前位置:  开发笔记 > 编程语言 > 正文

在Scala中初始化时如何强制数组的类型?

如何解决《在Scala中初始化时如何强制数组的类型?》经验,为你挑选了1个好方法。

基本上,我有一个像这样的数组:

val base_length = Array(
    0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56,
    64, 80, 96, 112, 128, 160, 192, 224, 0
  );

当scala看到它时,它想要这样做:

base_length: Array[Int] = Array(...)

但我更愿意这样做:

base_length: Array[Byte] = Array(...)

我试过了:

val base_length = Array[Byte](...)

但斯卡拉说:

:4: error: type arguments [Byte] do not conform to method apply's type
parameter bounds [A <: AnyRef]
       val base_length = Array[Byte](1,2,3,4,5)

在我看来,这基本上告诉我,Array构造函数想要从参数中找出数组的类型.通常这很棒,但在这种情况下,我有充分的理由希望数组元素是Bytes.

我已经四处寻找指导,但我似乎找不到任何东西.任何帮助都会很棒!



1> VonC..:

它应该是:

C:\prog\>scala
Welcome to Scala version 2.7.5.final (Java HotSpot(TM) Client VM, Java 1.6.0_16).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val gu: Array[Byte] = Array(18, 19, 20)
gu: Array[Byte] = Array(18, 19, 20)

这不是一成不变的.Seq将是朝这个方向迈出的一步,即使它只是一个特征(正如克里斯托弗在评论中提到的那样)添加有限的元素序列.Scala列表将是不可变的.


事实上,Seq是一个特质.数组具有Seq特性,但这与不可变实际上没有任何关系.相反,它与订购有关.
推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有