Как заставить тип массива при инициализации в Scala? - PullRequest
6 голосов
/ 27 августа 2009

В основном, у меня есть такой массив:

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
  );

И когда Скала видит это, она хочет сделать это:

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 с.

Я искал руководство по этому вопросу, но мне кажется, что я ничего не могу найти. Любая помощь будет отличной!

Ответы [ 2 ]

5 голосов
/ 27 августа 2009

Должно быть:

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 будет неизменным.

1 голос
/ 28 августа 2009

Работает в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...