基本上,我有一个这样的数组:
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](...)
但斯卡拉说:
<console>: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构造函数想要从参数中找出数组的类型。通常这很棒,但在这种情况下,我有充分的理由希望数组元素为Byte
s。
我已经四处寻找指导,但我似乎找不到任何东西。任何帮助都会很棒!
答案 0 :(得分:5)
应该是:
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将是朝这个方向迈出的一步,即使它只是一个特征(在评论中提到Christopher)添加有限的元素序列。 Scala列表将是不可变的。
答案 1 :(得分:1)
适用于Scala 2.8.0:
Welcome to Scala version 2.8.0.r18502-b20090818020152 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_15).
Type in expressions to have them evaluated.
Type :help for more information.
scala> Array[Byte](0, 1, 2)
res0: Array[Byte] = Array(0, 1, 2)