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

标签 arrays scala templates

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

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](...)

但是 Scala 说:
<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。

我已经环顾四周寻求这方面的指导,但我似乎无法找到任何东西。任何帮助都会很棒!

最佳答案

它应该是:

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 列表将是不可变的。

关于arrays - 在 Scala 中初始化时如何强制数组的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1342927/

相关文章:

arrays - 如何在 Swift 4.2 中创建数据类型泛型

scala - 在 IDEA 14 Ultimate 中无法调试 Play 项目

c++ - 有两个不同版本的箭头运算符?

javascript - 一次只有一个 Handlebars 助手工作。要么 stripTags 要么 truncate,而不是两者?

arrays - zsh:检查字符串是否在数组中

c++ - 在 C++ 中查找最大值、最小值和众数

scala - 为什么 Scala 不能从隐含证据中推断出类型

scala语法匹配多个案例类类型而不分解案例类

c++ - 模板映射的设计问题采用不同的结构

arrays - 使用来自 firebase 集合的键值对填充 react 选择选项数组